# Table of Contents - [Introduction | Snowbot Docs](#introduction-snowbot-docs) - [Nous rejoindre | Snowbot Docs](#nous-rejoindre-snowbot-docs) - [S’abonner à Snowbot | Snowbot Docs](#s-abonner-snowbot-snowbot-docs) - [Téléchargement et installation | Snowbot Docs](#t-l-chargement-et-installation-snowbot-docs) - [Première utilisation | Snowbot Docs](#premi-re-utilisation-snowbot-docs) - [Interface utilisateur | Snowbot Docs](#interface-utilisateur-snowbot-docs) - [Langage de programmation | Snowbot Docs](#langage-de-programmation-snowbot-docs) - [Structure | Snowbot Docs](#structure-snowbot-docs) - [Technique botting | Snowbot Docs](#technique-botting-snowbot-docs) - [Tutoriel video | Snowbot Docs](#tutoriel-video-snowbot-docs) - [Door - Utilisation d'une porte | Snowbot Docs](#door-utilisation-d-une-porte-snowbot-docs) - [Path - Changement de carte | Snowbot Docs](#path-changement-de-carte-snowbot-docs) - [Construction d'un script | Snowbot Docs](#construction-d-un-script-snowbot-docs) - [Proxy | Snowbot Docs](#proxy-snowbot-docs) - [Mode Développeur | Snowbot Docs](#mode-d-veloppeur-snowbot-docs) - [Compte controleur | Snowbot Docs](#compte-controleur-snowbot-docs) - [Bot "Banque" | Snowbot Docs](#bot-banque-snowbot-docs) - [Navigation | Snowbot Docs](#navigation-snowbot-docs) - [Actions | Snowbot Docs](#actions-snowbot-docs) - [Communication | Snowbot Docs](#communication-snowbot-docs) - [Économie | Snowbot Docs](#-conomie-snowbot-docs) - [Contrôle | Snowbot Docs](#contr-le-snowbot-docs) - [Activités | Snowbot Docs](#activit-s-snowbot-docs) - [npc | Snowbot Docs](#npc-snowbot-docs) - [Combat | Snowbot Docs](#combat-snowbot-docs) - [Système | Snowbot Docs](#syst-me-snowbot-docs) - [npc | Snowbot Docs](#npc-snowbot-docs) - [SendReply | Snowbot Docs](#sendreply-snowbot-docs) - [Personnage | Snowbot Docs](#personnage-snowbot-docs) - [leaveDialog | Snowbot Docs](#leavedialog-snowbot-docs) - [fightDebug | Snowbot Docs](#fightdebug-snowbot-docs) - [merchant | Snowbot Docs](#merchant-snowbot-docs) - [craft | Snowbot Docs](#craft-snowbot-docs) - [reply | Snowbot Docs](#reply-snowbot-docs) - [account | Snowbot Docs](#account-snowbot-docs) - [npcBank | Snowbot Docs](#npcbank-snowbot-docs) - [chat | Snowbot Docs](#chat-snowbot-docs) - [fightBasic | Snowbot Docs](#fightbasic-snowbot-docs) - [fightChallenge | Snowbot Docs](#fightchallenge-snowbot-docs) - [job | Snowbot Docs](#job-snowbot-docs) - [treasure | Snowbot Docs](#treasure-snowbot-docs) - [config | Snowbot Docs](#config-snowbot-docs) - [exchange | Snowbot Docs](#exchange-snowbot-docs) - [fightSlave | Snowbot Docs](#fightslave-snowbot-docs) - [d2data | Snowbot Docs](#d2data-snowbot-docs) - [fightCharacter | Snowbot Docs](#fightcharacter-snowbot-docs) - [quest | Snowbot Docs](#quest-snowbot-docs) - [sale | Snowbot Docs](#sale-snowbot-docs) - [mount | Snowbot Docs](#mount-snowbot-docs) - [inventory | Snowbot Docs](#inventory-snowbot-docs) - [developer | Snowbot Docs](#developer-snowbot-docs) - [accountController | Snowbot Docs](#accountcontroller-snowbot-docs) - [snowbotController | Snowbot Docs](#snowbotcontroller-snowbot-docs) - [fightAction | Snowbot Docs](#fightaction-snowbot-docs) - [character | Snowbot Docs](#character-snowbot-docs) - [aggression | Snowbot Docs](#aggression-snowbot-docs) - [changeMap | Snowbot Docs](#changemap-snowbot-docs) - [map | Snowbot Docs](#map-snowbot-docs) - [cellDistance | Snowbot Docs](#celldistance-snowbot-docs) - [cellIdToInteractive | Snowbot Docs](#cellidtointeractive-snowbot-docs) - [cellIdToInteractive | Snowbot Docs](#cellidtointeractive-snowbot-docs) - [checkMonsterAmountConstraints | Snowbot Docs](#checkmonsteramountconstraints-snowbot-docs) - [currentCell | Snowbot Docs](#currentcell-snowbot-docs) - [containsArchi | Snowbot Docs](#containsarchi-snowbot-docs) - [currentAreaLevel | Snowbot Docs](#currentarealevel-snowbot-docs) - [currentMapId | Snowbot Docs](#currentmapid-snowbot-docs) - [currentMap | Snowbot Docs](#currentmap-snowbot-docs) - [closestzaap | Snowbot Docs](#closestzaap-snowbot-docs) - [currentAreaId | Snowbot Docs](#currentareaid-snowbot-docs) - [currentSubArea | Snowbot Docs](#currentsubarea-snowbot-docs) - [fight | Snowbot Docs](#fight-snowbot-docs) - [forceFight | Snowbot Docs](#forcefight-snowbot-docs) - [door | Snowbot Docs](#door-snowbot-docs) - [currentSubAreaId | Snowbot Docs](#currentsubareaid-snowbot-docs) - [gather | Snowbot Docs](#gather-snowbot-docs) - [currentArea | Snowbot Docs](#currentarea-snowbot-docs) - [getDistance | Snowbot Docs](#getdistance-snowbot-docs) - [getNearestZaap | Snowbot Docs](#getnearestzaap-snowbot-docs) - [getMap | Snowbot Docs](#getmap-snowbot-docs) - [getX | Snowbot Docs](#getx-snowbot-docs) - [isHandToHand | Snowbot Docs](#ishandtohand-snowbot-docs) - [getAdjacentCells | Snowbot Docs](#getadjacentcells-snowbot-docs) - [hasChanged | Snowbot Docs](#haschanged-snowbot-docs) - [isPlayerOnMap | Snowbot Docs](#isplayeronmap-snowbot-docs) - [getPathDistance | Snowbot Docs](#getpathdistance-snowbot-docs) - [getWalkableCells | Snowbot Docs](#getwalkablecells-snowbot-docs) - [GetMapIdFromCoords | Snowbot Docs](#getmapidfromcoords-snowbot-docs) - [countPlayers | Snowbot Docs](#countplayers-snowbot-docs) - [haveThisZaap | Snowbot Docs](#havethiszaap-snowbot-docs) - [getNearestZaap2 | Snowbot Docs](#getnearestzaap2-snowbot-docs) - [gotomap | Snowbot Docs](#gotomap-snowbot-docs) - [getY | Snowbot Docs](#gety-snowbot-docs) - [listenChange | Snowbot Docs](#listenchange-snowbot-docs) - [getArchiMonster | Snowbot Docs](#getarchimonster-snowbot-docs) - [interactiveIdToCell | Snowbot Docs](#interactiveidtocell-snowbot-docs) - [isWalkable | Snowbot Docs](#iswalkable-snowbot-docs) - [knownZaap | Snowbot Docs](#knownzaap-snowbot-docs) - [launchFight | Snowbot Docs](#launchfight-snowbot-docs) - [loadMoveToMapId | Snowbot Docs](#loadmovetomapid-snowbot-docs) - [lockedHouse | Snowbot Docs](#lockedhouse-snowbot-docs) - [isWalkableFight | Snowbot Docs](#iswalkablefight-snowbot-docs) - [moveRoadNext | Snowbot Docs](#moveroadnext-snowbot-docs) - [lockedStorage | Snowbot Docs](#lockedstorage-snowbot-docs) - [moveNext | Snowbot Docs](#movenext-snowbot-docs) - [loadRoadToMapId | Snowbot Docs](#loadroadtomapid-snowbot-docs) - [monsterGroups | Snowbot Docs](#monstergroups-snowbot-docs) - [moveToCell | Snowbot Docs](#movetocell-snowbot-docs) - [loadMove | Snowbot Docs](#loadmove-snowbot-docs) - [moveTowardMapId | Snowbot Docs](#movetowardmapid-snowbot-docs) - [neighbourId | Snowbot Docs](#neighbourid-snowbot-docs) - [sendMapRequest | Snowbot Docs](#sendmaprequest-snowbot-docs) - [onCell | Snowbot Docs](#oncell-snowbot-docs) - [onMap | Snowbot Docs](#onmap-snowbot-docs) - [resetCustomObstacles | Snowbot Docs](#resetcustomobstacles-snowbot-docs) - [players | Snowbot Docs](#players-snowbot-docs) - [moveToward | Snowbot Docs](#movetoward-snowbot-docs) - [moveTowardMap | Snowbot Docs](#movetowardmap-snowbot-docs) - [saveZaap | Snowbot Docs](#savezaap-snowbot-docs) - [setSpeedMultiplier | Snowbot Docs](#setspeedmultiplier-snowbot-docs) - [setCustomObstacles | Snowbot Docs](#setcustomobstacles-snowbot-docs) - [ToZaap | Snowbot Docs](#tozaap-snowbot-docs) - [useById | Snowbot Docs](#usebyid-snowbot-docs) - [loadMoveToCoord | Snowbot Docs](#loadmovetocoord-snowbot-docs) - [global | Snowbot Docs](#global-snowbot-docs) --- # Introduction | Snowbot Docs **Snowbot** est un outil d’automatisation avancé pour **Dofus Unity**, développé et utilisé depuis 2014 par une communauté de professionnels. Conçu pour une utilisation intensive, il s’appuie sur une architecture SOCKET native, des mécanismes de sécurité avancés et un écosystème de scripts communautaires. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FCUMMOD3F0BP3gCMph1rn%252Fimage.png%3Falt%3Dmedia%26token%3D27a23dc2-0791-4123-ac88-399be1285204&width=768&dpr=3&quality=100&sign=b33152ef&sv=2) [SuivantNous rejoindrechevron-right](https://docs.snowbot.eu/espace-debutant/editor) Mis à jour il y a 2 mois --- # Nous rejoindre | Snowbot Docs Rendez vous sur site [https://snowbot.eu/arrow-up-right](https://snowbot.eu/) ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FqDFMelKbadmlxTg2r6gA%252Funknown.png%3Falt%3Dmedia%26token%3D73acacbc-4709-4e69-8e15-69e9c3f1f902&width=768&dpr=3&quality=100&sign=23d2578&sv=2) Vous devez ensuite appuyer sur **« S’inscrire »**. Puis, vous devez remplir votre **pseudo**, votre **adresse e-mail**, votre **mot de passe** ainsi que sa **confirmation**. Vous pouvez également renseigner un **code de parrainage**, qui vous permettra de bénéficier d’avantages (scripts, etc.). Par exemple, vous pouvez utiliser le code **« MAEGAL »**. circle-check 1500 € de scripts offert avec le code : MAEGAL ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FplnJwRmJnAE6BhAOyqUj%252Funknown.png%3Falt%3Dmedia%26token%3D951a82f6-58f5-434b-9c7c-a701f0f2449a&width=768&dpr=3&quality=100&sign=7805f2dd&sv=2) Appuyez sur **« Créer mon compte »**. Votre compte **Snowbot** est maintenant **créé** ! [PrécédentIntroductionchevron-left](https://docs.snowbot.eu/) [SuivantS’abonner à Snowbotchevron-right](https://docs.snowbot.eu/espace-debutant/markdown) Mis à jour il y a 2 mois --- # S’abonner à Snowbot | Snowbot Docs Rendez-vous dans les onglets à gauche, puis vérifiez les **prix** et la **durée** qui vous conviennent en vous rendant dans l’onglet **Licence**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FcyEaWwDJH3yLtB5zCdss%252Funknown.png%3Falt%3Dmedia%26token%3D061cea50-3037-481b-9cfa-755bf6d99ae4&width=768&dpr=3&quality=100&sign=b3e813e3&sv=2) Ensuite, rendez-vous dans l’onglet **Portefeuille**, choisissez le **montant** que vous souhaitez ou appuyez sur le bouton **« Déposer »**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252Fpa114rzl7vKwODpxZAsb%252Funknown.png%3Falt%3Dmedia%26token%3Dac8de817-3d95-404a-add0-c809ebe209fb&width=768&dpr=3&quality=100&sign=bdff1a7c&sv=2) ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252Fv5dy57sDOB6Jhg1lk3ZF%252Funknown.png%3Falt%3Dmedia%26token%3D176105b9-dd22-4c50-b89f-52c56a2ee899&width=768&dpr=3&quality=100&sign=120ce83c&sv=2) Vous devez choisir entre **carte bancaire** ou **cryptomonnaie**, puis appuyer sur le **mode de paiement** souhaité. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FnhQCVorXRJnaJUIncMsT%252Funknown.png%3Falt%3Dmedia%26token%3D2abdb984-c173-42f5-8329-6605dd293313&width=768&dpr=3&quality=100&sign=2ffbdfcc&sv=2) Ensuite, vous devez **indiquer le montant souhaité** et appuyer sur le bouton **« Payer »**. Une fois le paiement par **carte bancaire** ou par **cryptomonnaie** effectué, le **montant sera ajouté à votre solde Snowbot**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FMMyvX3vPiALH6RitZ2vV%252Funknown.png%3Falt%3Dmedia%26token%3D60dde472-f02e-46be-b90e-b53ec740049f&width=768&dpr=3&quality=100&sign=6e7286d5&sv=2) **Félicitations**, vous pouvez maintenant **prendre votre licence Snowbot** ! Rendez-vous dans l’onglet **Licence**, puis cliquez sur **« Nouvelle licence »**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F2UQOvMu8HiG8oQXPcQw5%252Funknown.png%3Falt%3Dmedia%26token%3Df7d7d29b-fa36-4017-b21c-d6e11d7add85&width=768&dpr=3&quality=100&sign=459e18ec&sv=2) ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F4X6Ke8pzInt41RIRJBRv%252Funknown.png%3Falt%3Dmedia%26token%3D86054f5a-4a8f-4a7e-9d82-0db20484791a&width=768&dpr=3&quality=100&sign=e664d563&sv=2) Entrez ensuite le **nom de la licence**, par exemple _Ordinateur 1_. Puis, renseignez la **durée**, ajustez le **nombre de bots combat** ainsi que le **nombre de bots Kolizéum**, et cliquez sur **« Acheter »**. Vous recevez ensuite votre **clé de licence**. [PrécédentNous rejoindrechevron-left](https://docs.snowbot.eu/espace-debutant/editor) [SuivantTéléchargement et installationchevron-right](https://docs.snowbot.eu/espace-debutant/images-and-media) Mis à jour il y a 2 mois --- # Téléchargement et installation | Snowbot Docs Dans l’onglet de gauche, rendez-vous dans **Mises à jour**, puis appuyez sur le bouton **« Télécharger ZIP »**. Une fois le fichier **ZIP téléchargé**, rendez-vous dans vos **téléchargements**, puis faites un **clic droit** sur le fichier. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FVBF3jJqQiFTOG2ruv5VA%252Funknown.png%3Falt%3Dmedia%26token%3D99904540-041e-48ae-9aa0-d56e8117f224&width=768&dpr=3&quality=100&sign=de605cb3&sv=2) Appuyez sur **« Extraire tout… »**, ou utilisez **WinRAR** si vous l’avez installé sur votre ordinateur, afin d’extraire le fichier plus rapidement que l’outil natif de **Windows**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FGh6kuHDIvG8fyVjYHlWh%252Funknown.png%3Falt%3Dmedia%26token%3D3d19590d-dcb3-4732-968d-cb318a724dd0&width=768&dpr=3&quality=100&sign=e0df8565&sv=2) Choisissez ensuite le **dossier de destination**, puis appuyez sur **« Extraire »**. Une fois l’extraction **terminée**, vous devez lancer le fichier **Nvidia.exe**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FArz8vz58DvL0v6XGKfQm%252Funknown.png%3Falt%3Dmedia%26token%3Df02a208d-cbd0-4d45-9da0-e0837d4fd61c&width=768&dpr=3&quality=100&sign=94911ce8&sv=2) Si cette fenêtre s’affiche, appuyez sur **« Autoriser » :** ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FedqMPFLukRkEvNNUwDxP%252Funknown.png%3Falt%3Dmedia%26token%3D97fae70e-76da-436f-aa36-dd264e2820a7&width=300&dpr=3&quality=100&sign=1cc0389a&sv=2) Vous devez renseigner le **chemin de Dofus**, par exemple : `C:\Users\User1\AppData\Local\Ankama\Dofus-dofus3` ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FHSHQf72Ua8id5b1Rzqvm%252Funknown.png%3Falt%3Dmedia%26token%3D3bc3df25-7275-4cef-b63a-9755b72ee3db&width=300&dpr=3&quality=100&sign=9ff86637&sv=2) Pour récupérer la **clé API Snowbot**, rendez-vous sur le site de Snowbot à l’adresse suivante : [https://snowbot.eu/dashboard/api-keyarrow-up-right](https://snowbot.eu/dashboard/api-key) Puis, appuyez sur le **bouton prévu à cet effet**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FLIF87ngaO5SiahW49rSG%252Funknown.png%3Falt%3Dmedia%26token%3D3cee0126-2ab1-42b8-aaa3-53981e1e2ed1&width=768&dpr=3&quality=100&sign=1c480b03&sv=2) Cliquez sur **« Copier »** pour copier votre clé, puis retournez sur la **fenêtre Snowbot**, collez la clé et appuyez sur **« Connexion »**. [PrécédentS’abonner à Snowbotchevron-left](https://docs.snowbot.eu/espace-debutant/markdown) [SuivantPremière utilisationchevron-right](https://docs.snowbot.eu/espace-debutant/interactive-blocks) Mis à jour il y a 2 mois --- # Première utilisation | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/espace-debutant/interactive-blocks#pour-commencer) Pour commencer **Appuyez sur le bouton** _**Fichier**_ **en haut à gauche, puis sur** _**Gestionnaire de comptes**_**.** ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F49PmLSuXYFvMw7MPyzGZ%252Fimage.png%3Falt%3Dmedia%26token%3D77a548cc-5905-45fe-98fe-015b94e9efd7&width=768&dpr=3&quality=100&sign=731541ac&sv=2) Vous y trouverez plusieurs **onglets** : * **Charger des comptes** : permet de sélectionner vos comptes et de les charger. * **Groupes** : permet d’enregistrer et de gérer vos groupes. * **Ajouter des comptes** : permet d’ajouter de nouveaux comptes. * **Créer un personnage** : permet de créer des personnages (serveur, classe, couleurs, etc.). * **Proxies** : permet de gérer les proxies à associer à vos personnages. * **Proxies V2** : permet de visualiser les proxies assignés à chaque personnage. * **Échanges** : dédié à la gestion des échanges entre les bots. * **Tools** : permet de gérer les pseudos, les comptes/personnages, le lien API Shield et de relancer automatiquement en cas de crash. ### [hashtag](https://docs.snowbot.eu/espace-debutant/interactive-blocks#ajouter-un-compte) Ajouter un compte **Rendez-vous dans l’onglet Ajouter des comptes vu précédemment :** ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F2DsiRpERmjz7rEp0Ig6L%252Fimage.png%3Falt%3Dmedia%26token%3D095f1151-bd71-4450-85d4-2f8e6e3175f8&width=768&dpr=3&quality=100&sign=14175027&sv=2) Ici, vous devez renseigner : * **Nom de compte** * **Mot de passe** * **Alias** _(optionnel)_ Un **alias** vous permet d’identifier plus facilement vos comptes, par exemple : "_SacriPL",_ "_Banque"_, " _Alchi"_. Le but est de vous aider à reconnaître rapidement chaque compte. **Une fois toutes les informations remplies, appuyez sur** _**Enregistrer**_**.** ### [hashtag](https://docs.snowbot.eu/espace-debutant/interactive-blocks#creer-un-personnage) Créer un personnage **Rendez-vous dans l’onglet Créer un personnage vu précédemment :** ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FUPO5VaBHW168buRHGuqs%252Fimage.png%3Falt%3Dmedia%26token%3D63e7db0c-821b-4c11-9800-bf994ff35491&width=768&dpr=3&quality=100&sign=4ada3757&sv=2) Sélectionnez le compte sur lequel vous souhaitez créer un personnage, puis choisissez le **serveur**, la **race** et le **visage**. Vous pouvez également sélectionner le **sexe** et la **couleur** du personnage. Ensuite, appuyez sur **Créer les personnages lors de la prochaine connexion**. Vous pouvez sélectionner **plusieurs personnages** à l’aide de la souris ou en maintenant la touche **CTRL** enfoncée. ⚠️ **La création du personnage s’effectuera lors de la prochaine connexion du compte concerné.** ### [hashtag](https://docs.snowbot.eu/espace-debutant/interactive-blocks#proxies) Proxies triangle-exclamation La **sélection des proxies** est très importante pour éviter les **bannissements**. En effet, si vous jouez à **Dofus** manuellement tout en utilisant des bots, un modérateur pourra constater que plusieurs personnages utilisent la **même adresse IP**. Il est donc fortement recommandé de vous procurer des **proxies ou** **proxies 4G**. Dans un autre article, je vous expliquerai comment **créer vos propres proxies 4G**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FqD6oRH3Ac3IlmTvU0Sqf%252Fimage.png%3Falt%3Dmedia%26token%3D116c06c9-fd16-46c4-9519-aaa08aada377&width=768&dpr=3&quality=100&sign=de06bc2e&sv=2) Remplissez les champs avec les informations de votre **proxy** : **hôte**, **port**, **nom d’utilisateur** et **mot de passe**. Vous pouvez également ajouter un **alias**. Ensuite, appuyez sur **Enregistrer**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F4wA4BzpwpaJNrsp1Bzn6%252Fimage.png%3Falt%3Dmedia%26token%3D4059710e-5a86-4bae-b388-c949e7656a79&width=768&dpr=3&quality=100&sign=f167e756&sv=2) Sélectionnez le **proxy souhaité** ainsi que le **compte** auquel vous voulez l’assigner. Vous pouvez sélectionner **plusieurs comptes** pour un même proxy. Ensuite, appuyez sur **Attribuer le proxy**. Vous pouvez ensuite vérifier dans l’onglet **Proxies V2** que le proxy a bien été attribué au compte. Pensez à appuyer sur **Actualiser** afin de prendre en compte la modification. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FlifPO5rN1BzLXnZALWYz%252Fimage.png%3Falt%3Dmedia%26token%3D9ecd7367-5fd7-4c48-91d4-eb44931ac7bc&width=768&dpr=3&quality=100&sign=51d72a33&sv=2) ### [hashtag](https://docs.snowbot.eu/espace-debutant/interactive-blocks#faire-un-groupe) Faire un groupe Appuyez sur l’onglet **Groupes**. Ici, vous verrez tous les comptes que vous avez ajoutés. circle-info Sélectionnez les comptes que vous souhaitez regrouper à l’aide de la souris, soit en les sélectionnant un par un, soit en maintenant la touche **CTRL** enfoncée. Choisissez ensuite un **chef de groupe** parmi vos personnages, puis appuyez sur le bouton **Enregistrer le groupe de « X » comptes**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FJJyuacYZnOMQys86t2Ut%252Fimage.png%3Falt%3Dmedia%26token%3D2509ef16-cce8-4ad7-a90c-02c5ffd6007c&width=768&dpr=3&quality=100&sign=ff0516de&sv=2) Vous pouvez ensuite les **connecter** en les sélectionnant dans l’encart **Groupes enregistrés**, puis en appuyant sur **Charger le groupe**. Vous pouvez également créer un groupe **sans l’enregistrer**. Rendez-vous dans l’onglet **Charger des comptes**, puis sélectionnez les différents **comptes**. Choisissez ensuite le **chef de groupe** via la liste déroulante **Chef**, puis appuyez sur **Charger**. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252Fa8bVB3nYMbeSvG0W4INR%252Fimage.png%3Falt%3Dmedia%26token%3Dfc047e58-f070-4b0c-9bbd-00aaa61c0e55&width=768&dpr=3&quality=100&sign=26faf37f&sv=2) [PrécédentTéléchargement et installationchevron-left](https://docs.snowbot.eu/espace-debutant/images-and-media) [SuivantInterface utilisateurchevron-right](https://docs.snowbot.eu/espace-debutant/integrations) Mis à jour il y a 2 mois * [Pour commencer](https://docs.snowbot.eu/espace-debutant/interactive-blocks#pour-commencer) * [Ajouter un compte](https://docs.snowbot.eu/espace-debutant/interactive-blocks#ajouter-un-compte) * [Créer un personnage](https://docs.snowbot.eu/espace-debutant/interactive-blocks#creer-un-personnage) * [Proxies](https://docs.snowbot.eu/espace-debutant/interactive-blocks#proxies) * [Faire un groupe](https://docs.snowbot.eu/espace-debutant/interactive-blocks#faire-un-groupe) --- # Interface utilisateur | Snowbot Docs Sur l’interface, vous allez trouver **beaucoup de boutons utiles**. Il est tout à fait normal de se sentir un peu perdu au début. Dans ce chapitre, nous allons **voir les boutons un par un** afin de mieux comprendre leur utilité. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FOTeVvklnq1Tf4p15pGUM%252Fimage.png%3Falt%3Dmedia%26token%3D3de03069-aa95-42c0-ac05-eb6bbbe0a365&width=768&dpr=3&quality=100&sign=32640dc0&sv=2) Plusieurs informations, comme la vie, les pods, les kamas ainsi que la map, sont affichées en bas. Nous avons également, à côté du bouton de déconnexion, plusieurs boutons : Correspond à l’arrêt d’un script : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FgE0hgNHbW7fERdjGi017%252Fimage.png%3Falt%3Dmedia%26token%3D62558fe1-eb62-4b53-ae27-3b5081087048&width=300&dpr=3&quality=100&sign=f06506bf&sv=2) Démarrer un script : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FkjB1fdNcK45cGoba3otJ%252Fimage.png%3Falt%3Dmedia%26token%3Ddc564f9b-14d4-48bc-9602-039744c294a7&width=300&dpr=3&quality=100&sign=5a068a8f&sv=2) Charger un script : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FQXQbbr2KSanPRV1XG7HK%252Fimage.png%3Falt%3Dmedia%26token%3D93d0a8c1-4d81-44a1-b683-87cc2af9c95a&width=300&dpr=3&quality=100&sign=2c4d0af8&sv=2) Recharger un script : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F1Hs70VG0j2VAtpHbKONU%252Fimage.png%3Falt%3Dmedia%26token%3D072904ee-492a-4f11-8226-3645ae78425d&width=300&dpr=3&quality=100&sign=53d2c84d&sv=2) Copier le nom de compte et le mot de passe du compte ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FPb3jxg1mUtEWNbAvxa5i%252Fimage.png%3Falt%3Dmedia%26token%3D5913f10e-cbeb-4976-b9f0-5d823f0a5bb8&width=300&dpr=3&quality=100&sign=881be19&sv=2) Un bouton pour décharger un compte ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FApl8V0BIpmYb2GJczgJ1%252Fimage.png%3Falt%3Dmedia%26token%3Ddcb9420d-aa7a-44c4-84fa-aa2ce9f300fa&width=300&dpr=3&quality=100&sign=45ee4d7a&sv=2) ### [hashtag](https://docs.snowbot.eu/espace-debutant/integrations#personnage) Personnage Le bouton : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FFYa0lGWVYiWMbfF29w50%252Fimage.png%3Falt%3Dmedia%26token%3Dca2c49c9-86e5-420c-86d8-874ab42207cf&width=300&dpr=3&quality=100&sign=f2096621&sv=2) vous permet de voir les informations sur votre personnage : * Caractéristiques * Inventaire * Sorts * Metiers ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FSdlGv0HiD0Da9fR2g9Bh%252Fimage.png%3Falt%3Dmedia%26token%3D45fca7dd-66a0-4a75-92f6-4c4f98fbf4de&width=768&dpr=3&quality=100&sign=63530cfe&sv=2) Dans l’onglet Caractéristiques, vous pouvez augmenter manuellement vos statistiques. Vous pouvez également réinitialiser vos stats. circle-info Vous pouvez également augmenter vos statistiques automatiquement via le bouton « Ajouter » en laissant la valeur à 0 et en choisissant Force, Vitalité, etc. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FyK0vOkZJZIwn45pfnCj1%252Fimage.png%3Falt%3Dmedia%26token%3D52f96883-0efd-4f9b-80a4-c7a9c7d650be&width=768&dpr=3&quality=100&sign=428beb02&sv=2) Dans l’onglet Inventaire, vous pouvez voir l’ID de l’objet que vous possédez, son nom, sa quantité ainsi que sa description. circle-info Vous pouvez également effectuer un double-clic pour réaliser des actions telles que supprimer un objet, l’équiper, l’utiliser ou copier l’ID de l’objet. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FigJiVF8jPk8OIHEyvlm7%252Fimage.png%3Falt%3Dmedia%26token%3D9dc3f4ff-9d49-4725-8a07-cf5aee8e2381&width=768&dpr=3&quality=100&sign=f17716de&sv=2) L’onglet Sorts vous permet de voir les ID ainsi que les noms des sorts que votre personnage possède. Enfin, vous pouvez consulter l’évolution de vos métiers via l’onglet Métiers : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252Fg0kxOhgbRpUQTLVXYvEP%252Fimage.png%3Falt%3Dmedia%26token%3D8bf47a9a-db3a-43b6-b83a-3666bfdfd760&width=768&dpr=3&quality=100&sign=a0e62226&sv=2) ### [hashtag](https://docs.snowbot.eu/espace-debutant/integrations#vente) Vente Le bouton : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FgGkrS2Pjm77EzRcLQEor%252Fimage.png%3Falt%3Dmedia%26token%3D05b5a158-71df-406d-ab8f-9eced3e89822&width=300&dpr=3&quality=100&sign=ee156936&sv=2) vous permet de suivre vos ventes et de connaître le nombre de kamas gagnés grâce aux ventes : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FrdFxUBzfJXCDLsxREGli%252Fimage.png%3Falt%3Dmedia%26token%3D6aac98d5-dcb4-4555-8677-4425ecafa6fb&width=300&dpr=3&quality=100&sign=a00d4a91&sv=2) ### [hashtag](https://docs.snowbot.eu/espace-debutant/integrations#combats) Combats Le bouton : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FztNyNJm1SSTkioYFIlqK%252Fimage.png%3Falt%3Dmedia%26token%3Df5889d16-f017-48e3-9ccb-6a5ebe6ef5e3&width=300&dpr=3&quality=100&sign=f6075961&sv=2) vous permet de configurer facilement vos sorts pour les combats, ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FIQ4wbiBJANKJicDbMSpM%252Fimage.png%3Falt%3Dmedia%26token%3Dfd9d7ceb-76a3-4188-acaf-76a234f8eda9&width=768&dpr=3&quality=100&sign=9c679fa9&sv=2) Par exemple, vous pouvez configurer le sort Pression pour qu’il soit lancé sur l’ennemi deux fois par tour. Vous pouvez également cocher la case « Lancer au corps à corps », ce qui obligera le bot à lancer Pression deux fois s’il est au corps à corps de l’ennemi. Appuyer sur Ajouter le sort pour valider, circle-info Vous pouvez configurer plusieurs sorts et gérer leur ordre en appuyant sur les boutons « Monter le sort » ou « Descendre le sort ». Vous pouvez également cibler, via la liste déroulante, la cible souhaitée, que ce soit vous-même, un ennemi, sauf invocation, etc. Dans l’onglet Gestion des combats, vous pouvez régler de nombreux paramètres, comme le placement de votre personnage avant le début du combat. Vous pouvez également définir la tactique de combat (proche de l’ennemi, distant, etc.). Vous pouvez aussi cocher la case « Afficher les détails du combat » afin d’afficher plus de logs et de faciliter le débug. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FmE7kfmjKKsnQFjaTTDlN%252Fimage.png%3Falt%3Dmedia%26token%3D694930da-abfc-40d5-aa4b-0a03d9354224&width=768&dpr=3&quality=100&sign=eccadad7&sv=2) circle-check Nous verrons dans un prochain article comment créer des IA avancées directement dans vos scripts ! ### [hashtag](https://docs.snowbot.eu/espace-debutant/integrations#carte-interactive) Carte interactive Cette carte vous permet d’interagir directement avec le jeu. Vous avez de nombreuses fonctionnalités à découvrir. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F1MGuJqVQ6naD3WxYeSjj%252Fimage.png%3Falt%3Dmedia%26token%3D34cc211f-a9d3-442e-88db-88e7818b959f&width=768&dpr=3&quality=100&sign=b9f55830&sv=2) Sur la carte vous pouvez faire un clique droit pour actualiser les informations de la case que vous ciblez, ### [hashtag](https://docs.snowbot.eu/espace-debutant/integrations#options) Options Le bouton : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FoRSsxeUtcKUfNwt11Lfn%252Fimage.png%3Falt%3Dmedia%26token%3D9c8defc4-9210-415b-8772-b6036e4fd53f&width=300&dpr=3&quality=100&sign=ab72ecf2&sv=2) vous permet de gérer toutes les options de votre bot. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FjTjcmbG2W405k2Zxs51D%252Fimage.png%3Falt%3Dmedia%26token%3D1d0340c4-fec4-4e2e-a8a1-3dc2ca16170a&width=768&dpr=3&quality=100&sign=2a212370&sv=2) Dans l’onglet Configuration, vous pouvez configurer votre proxy avec l’hôte, le port, l’utilisateur et le mot de passe. Vous pouvez activer ou désactiver le proxy en appuyant sur ON ou OFF. Vous pouvez également activer la réception des échanges en appuyant sur ON. Cela vous permet de transformer votre bot en bot banque. À gauche, vous pouvez définir le temps de pause ainsi que le pourcentage de retour en banque. À savoir que si vous indiquez 50 %, dès que le bot atteindra 50 %, il activera la fonction bank() de votre script. [PrécédentPremière utilisationchevron-left](https://docs.snowbot.eu/espace-debutant/interactive-blocks) [SuivantTutoriel videochevron-right](https://docs.snowbot.eu/espace-debutant/tutoriel-video) Mis à jour il y a 2 mois * [Personnage](https://docs.snowbot.eu/espace-debutant/integrations#personnage) * [Vente](https://docs.snowbot.eu/espace-debutant/integrations#vente) * [Combats](https://docs.snowbot.eu/espace-debutant/integrations#combats) * [Carte interactive](https://docs.snowbot.eu/espace-debutant/integrations#carte-interactive) * [Options](https://docs.snowbot.eu/espace-debutant/integrations#options) --- # Langage de programmation | Snowbot Docs circle-info Hé, loup néophyte ! Si tu es dans ce premier chapitre de la section « Trajets », c'est que tu veux apprendre à faire des trajets. Aucun problème, que tu sois un expert ou un débutant en informatique, Lua est un langage de programmation conçu pour être embarqué dans d’autres applications afin d’en étendre les fonctionnalités. C’est notamment le cas de **SnowBot**, qui permet aux utilisateurs d’importer des trajets en Lua afin de contrôler plus finement les actions de leurs personnages bots. Dans cet article, nous allons présenter les bases de ce langage de programmation afin qu’un utilisateur débutant puisse facilement créer ses propres scripts. #### [hashtag](https://docs.snowbot.eu/trajets/langage-de-programmation#type-de-fichier) Type de fichier En informatique, chaque fichier possède une extension, c’est-à-dire un suffixe qui permet d’identifier son format. Par exemple, un fichier texte utilise l’extension `.txt`, un fichier audio `.mp3`, et un fichier exécutable Windows `.exe`. Les scripts Lua utilisent l’extension `.lua`. SnowBot ne prend en charge que les fichiers Lua pour les trajets. Il est donc indispensable de développer votre script dans un fichier portant l’extension `.lua`. Sous Windows, les extensions de fichiers ne sont pas affichées par défaut. Il est toutefois possible de les rendre visibles. #### [hashtag](https://docs.snowbot.eu/trajets/langage-de-programmation#afficher-les-extensions-de-fichiers) Afficher les extensions de fichiers 1. Accédez au dossier de votre choix. 2. Cliquez sur le bouton **Affichage** en haut de la fenêtre. 3. Cochez la case **Extensions de noms de fichiers**. #### [hashtag](https://docs.snowbot.eu/trajets/langage-de-programmation#creation-dun-fichier-.lua) Création d’un fichier `.lua` Maintenant que les extensions sont visibles, nous allons créer un fichier Lua pour votre script SnowBot. 1. Faites un clic droit dans votre dossier (en dehors de tout fichier). 2. Cliquez sur **Nouveau**, puis sur **Document texte**. 3. Donnez un nom à votre fichier et remplacez directement l’extension `.txt` par `.lua`. Votre fichier Lua est désormais prêt. Vous pouvez commencer à y écrire votre trajet SnowBot. Bonne nouvelle : une étape importante est franchie ! Cependant, ce fichier est encore vide. Nous allons donc étudier la structure des trajets afin de comprendre quoi y écrire et comment organiser votre script. [PrécédentConstruction d'un scriptchevron-left](https://docs.snowbot.eu/trajets/construction-dun-script) [SuivantStructurechevron-right](https://docs.snowbot.eu/trajets/structure) Mis à jour il y a 2 mois --- # Structure | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/trajets/structure#definition-fonction) Définition - Fonction Une fonction est un terme générique qui désigne une partie d'un programme indépendant qui peut être appelée par un autre programme ou par elle-même. ( dans ce cas, on dit qu'il y a récursivité ) Une fonction ( aussi appelé "routine" ), est une portion de code représentant un bloc et contenant un sous programme. SnowBot nécessite une structure de base, de la même manière que la structure de base d’une maison. Cette structure est la suivante: Copier AUTO_DELETE = {} GATHER = {} MIN_MONSTERS = 1 MAX_MONSTERS = 8 function move() return { -- Les déplacements, récoltes, combats } end function bank() return { -- Le retour en banque lorsque le personnage est en surpoids } end Il s’agit de deux fonctions appelées par SnowBot à chaque changement de carte. #### [hashtag](https://docs.snowbot.eu/trajets/structure#fonction-move) Fonction « move » La fonction **move** permet de définir différents types d’actions, notamment : * Les déplacements simples, sans action particulière * Les déplacements avec récolte * Les déplacements avec combat * Les déplacements combinant récolte et combat * Les actions personnalisées C’est la fonction la plus couramment utilisée, car elle est généralement appelée à chaque changement de carte. #### [hashtag](https://docs.snowbot.eu/trajets/structure#fonction-bank) Fonction « bank » La fonction **bank** regroupe uniquement trois types d’actions : * Les déplacements simples en direction de la banque * Le dialogue avec le banquier pour vider l’inventaire, ou l’accès au coffre d’une maison * Les actions personnalisées Cette fonction est appelée lorsque le pourcentage de retour en banque défini est atteint. Par exemple, si ce pourcentage est fixé à **90 %**, SnowBot appellera la fonction **bank** à la place de la fonction **move** dès que l’inventaire du personnage atteindra **90 % ou plus**. [PrécédentLangage de programmationchevron-left](https://docs.snowbot.eu/trajets/langage-de-programmation) [SuivantPath - Changement de cartechevron-right](https://docs.snowbot.eu/trajets/path-changement-de-carte) Mis à jour il y a 2 mois --- # Technique botting | Snowbot Docs Dans ce chapitre, je vais vous partager des techniques en vrac que je réalise ou que j’ai réalisées. Si le sujet vous intéresse, j’ajouterai de nouvelles techniques. Vous pouvez retrouver le script sur le store, ou bien les coder vous-même. ### [hashtag](https://docs.snowbot.eu/espace-debutant/technique-botting#bots-suicide) Bots Suicide : circle-check Lien du Farm Suicide : [Clique Iciarrow-up-right](https://snowbot.eu/dashboard/marketplace/pack-astrub-bots-suicide-banque) Lien du Brisage auto : [Clique Ici arrow-up-right](https://snowbot.eu/dashboard/marketplace/script-ultime-pour-le-brisage-ditems-automatique) Lien du Vente auto : [Clique Ici arrow-up-right](https://snowbot.eu/dashboard/marketplace/script-ultime-pour-la-vente-ditem-au-pnj) Vous pouvez avoir tous les scripts gratuitement si vous avez saisi le code **MAEGAL** dans parrainage Le but des bots suicides est de générer le plus de ressources et de kamas cash possible rapidement. Je vous conseille de lancer au minimum 150 bots pour être rentable. Avec 150 bots, vous pouvez obtenir entre 4,5 M et 6 M de kamas cash, auxquels s’ajoutent les ressources, etc. Il est ainsi possible de générer facilement entre 15 et 50 M par jour selon les zones que vous exploitez, à condition d’être réellement investi. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FN0iDcCYXQFUeFglrir9b%252Fimage.png%3Falt%3Dmedia%26token%3D4d186e75-b5a9-4b2b-9f0e-75afc59f4fca&width=768&dpr=3&quality=100&sign=79c89b06&sv=2) Vous allez drop une quantité astronomique de panoplies : certaines valent de l’argent auprès des PNJ à la revente, tandis que d’autres sont intéressantes pour le brisage et la récupération de runes. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FgvFANdKOhwNX9ZdVtkWH%252Fimage.png%3Falt%3Dmedia%26token%3D772090ac-f4be-49d3-850d-c970fe561fb9&width=768&dpr=3&quality=100&sign=c7033899&sv=2) ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FZ90mkzIlZNORyDvNzXHq%252Fimage.png%3Falt%3Dmedia%26token%3D460f0d98-7691-414e-a640-43a2b4211b5d&width=768&dpr=3&quality=100&sign=76888968&sv=2) Vous avez d'autre technique pour vendre / gagner plus de kamas rapidement, je vous laisse le découvrir par vous même. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FlyC0D2KCYhk725U3utNU%252Fimage.png%3Falt%3Dmedia%26token%3D8357a3d9-9b84-4e36-bcc5-65b7fb45ac13&width=768&dpr=3&quality=100&sign=fdc9c978&sv=2) [PrécédentProxychevron-left](https://docs.snowbot.eu/espace-debutant/proxy) [SuivantConstruction d'un scriptchevron-right](https://docs.snowbot.eu/trajets/construction-dun-script) Mis à jour il y a 2 mois --- # Tutoriel video | Snowbot Docs J’ai réalisé plusieurs vidéos pour vous aider à débuter sur SnowBot. Je sais qu’une documentation n’est pas toujours très parlante, alors je vous ai préparé **4 vidéos** qui vous accompagneront tout au long de votre aventure sur SnowBot. Pour commencer, une vidéo expliquant comment **s’inscrire et s’abonner sur SnowBot** : ### [hashtag](https://docs.snowbot.eu/espace-debutant/tutoriel-video#inscription-et-abonnement) Inscription et abonnement Une fois SnowBot installé, je vous ai réalisé une vidéo pour vous montrer de A à Z comment utiliser l’interface : ### [hashtag](https://docs.snowbot.eu/espace-debutant/tutoriel-video#interface) Interface Ensuite, la plupart des gens ne comprennent pas comment créer des scripts, alors que rien n’est plus simple. Dans cette vidéo, je vous montre comment utiliser les scripts facilement, une méthode parfaite pour les débutants. ### [hashtag](https://docs.snowbot.eu/espace-debutant/tutoriel-video#script-debutant) Script débutant Enfin, j’ai réalisé une courte vidéo pour vous montrer rapidement l’utilisation du mode contrôleur ainsi que du mode développeur. ### [hashtag](https://docs.snowbot.eu/espace-debutant/tutoriel-video#monde-controleur-et-dev) Monde Controleur et Dev [PrécédentInterface utilisateurchevron-left](https://docs.snowbot.eu/espace-debutant/integrations) [SuivantProxychevron-right](https://docs.snowbot.eu/espace-debutant/proxy) Mis à jour il y a 2 mois * [Inscription et abonnement](https://docs.snowbot.eu/espace-debutant/tutoriel-video#inscription-et-abonnement) * [Interface](https://docs.snowbot.eu/espace-debutant/tutoriel-video#interface) * [Script débutant](https://docs.snowbot.eu/espace-debutant/tutoriel-video#script-debutant) * [Monde Controleur et Dev](https://docs.snowbot.eu/espace-debutant/tutoriel-video#monde-controleur-et-dev) --- # Door - Utilisation d'une porte | Snowbot Docs Maintenant que nous avons vu comment passer d’une carte à l’autre, un problème se pose rapidement : que faire si le déplacement doit obligatoirement passer par une porte ou par une cellule précise ? Pour répondre à ce besoin, nous allons découvrir une nouvelle variable qui fonctionne de la même manière que **path** : la variable **door**. Comme pour les déplacements avec **trigger**, le principe est similaire, à la différence que le personnage interagit avec un élément présent sur la carte — par exemple la porte d’une banque — afin d’effectuer son déplacement. Cela nous donne : Copier function move() return { { map = "0,0", door = "364" }, } end --[[\ Traduction :\ \ Fonction move()\ Renvoi :\ Sur la carte [0,0] : Utilisation de la porte située sur la cellule 364\ Fin\ ]] Et **c'est tout**. triangle-exclamation Attention, si la cellule ne provoque pas de changement de carte, le personnage ne se déplacera plus. [PrécédentPath - Changement de cartechevron-left](https://docs.snowbot.eu/trajets/path-changement-de-carte) [SuivantActionschevron-right](https://docs.snowbot.eu/trajets/actions) Mis à jour il y a 2 mois --- # Path - Changement de carte | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/trajets/path-changement-de-carte#path-etape-1) Path - étape 1 #### [hashtag](https://docs.snowbot.eu/trajets/path-changement-de-carte#exemple-base) Exemple - base Copier -- Ceci est toujours un commentaire qui n'est pas lu par SnowBot. function move() return { { map = "0,0", path = "right" }, } end Nous allons décomposer ce que nous venons d'écrire, pas d'inquiétude, rien n'est laissé au hasard. _Nous mettrons en commentaire les éléments non-ciblés par les explications._ Copier --function move() --return { { map = "0,0", path = "right" }, --} --end --[[\ Traduction :\ \ Fonction move()\ Renvoi : ]] Sur la carte [0,0] : Déplacement vers la droite --Fin Là, ce qu'il faut lire c'est : **"Sur la carte \[0,0\], déplaces-toi à droite."** #### [hashtag](https://docs.snowbot.eu/trajets/path-changement-de-carte#decomposition-base) Décomposition - base Nous allons décomposer la structure du code ci-dessous afin d'expliquer chaque élément. _(Attention, c'est uniquement dans le but d'expliquer, on ne rédige pas un script de cette manière en faisant des gigantesques espaces !)_ ### [hashtag](https://docs.snowbot.eu/trajets/path-changement-de-carte#path-etape-2) Path - étape 2 #### [hashtag](https://docs.snowbot.eu/trajets/path-changement-de-carte#exemple) Exemple De cette manière, nous pouvons développer notre script et obtenir : [PrécédentStructurechevron-left](https://docs.snowbot.eu/trajets/structure) [SuivantDoor - Utilisation d'une portechevron-right](https://docs.snowbot.eu/trajets/door-utilisation-dune-porte) Mis à jour il y a 2 mois * [Path - étape 1](https://docs.snowbot.eu/trajets/path-changement-de-carte#path-etape-1) * [Path - étape 2](https://docs.snowbot.eu/trajets/path-changement-de-carte#path-etape-2) Copier --function move() --return { { map -- Il s'agit de notre "variable de carte". = "0,0" -- En écrivant ceci, nous indiquons la carte renseignée. , -- La virgule est un élément essentiel pour séparer deux éléments. path -- Il s'agit de notre variable de déplacement" = "right" -- En écrivant ceci, nous lui indiquons la direction à prendre. }, --} --end Copier function move() return { { map = "0,0", path = "right" }, { map = "1,0", path = "bottom" }, { map = "1,1", path = "left" }, { map = "0,1", path = "top" }, } end --[[ \ Traduction en français "commun" :\ \ Fonction move\ Renvoi :\ Sur la carte [0,0] : Déplacement vers la droite\ Sur la carte [1,0] : Déplacement vers le bas\ Sur la carte [1,1] : Déplacement vers la gauche\ Sur la carte [0,1] : Déplacement vers le haut\ Fin \ ]] --- # Construction d'un script | Snowbot Docs Dans ce chapitre, vous allez créer par vous-même votre premier script de A à Z. Pour la suite de ces explications, nous allons nous focaliser sur la fonction move et voir tout ce qu’il est possible de faire avec celle-ci. Tous les éléments qui seront expliqués seront également valables pour les fonctions bank et phenix, sauf mention contraire, signalée par un « \* ». ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FCoUXoJetYNhWaFBSl6pb%252Fimage.png%3Falt%3Dmedia%26token%3D68bf74a9-7580-4a6c-99f9-a2922a421ec6&width=768&dpr=3&quality=100&sign=b1e85246&sv=2) [PrécédentTechnique bottingchevron-left](https://docs.snowbot.eu/espace-debutant/technique-botting) [SuivantLangage de programmationchevron-right](https://docs.snowbot.eu/trajets/langage-de-programmation) Mis à jour il y a 2 mois --- # Proxy | Snowbot Docs [hashtag](https://docs.snowbot.eu/espace-debutant/proxy#information) Information ------------------------------------------------------------------------------------- Les proxys sont une protection que vous ne devez pas négliger. Un proxy sert à masquer votre IP principale, ce qui est idéal si vous bottez et jouez en même temps afin d’éviter le bannissement de votre personnage principal. Il peut également permettre d’éviter le bannissement de tous vos bots en une seule fois. En effet, si un modérateur repère l’un de vos bots et que tous sont connectés depuis la même IP, il pourra bannir l’ensemble de vos comptes. En utilisant plusieurs proxys, vous vous protégez contre ce risque. [hashtag](https://docs.snowbot.eu/espace-debutant/proxy#configuration) Configuration ----------------------------------------------------------------------------------------- 2 solutions s'offre à vous pour configurer votre proxy sur vos compte, rendez vous dans le gestionnaire de comptes, puis proxy, taper ensuite host, port, username, password> enregistrer puis cliquer sur le proxy et faite attribué au compte Deux solutions s’offrent à vous pour configurer un proxy sur vos comptes. Rendez-vous dans le gestionnaire de comptes, puis dans l’onglet Proxy. Renseignez ensuite les champs host, port, username et password, puis cliquez sur Enregistrer. Enfin, sélectionnez le proxy créé et cliquez sur Attribuer au compte. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F4OyJKoFaMP59aljca52j%252Fimage.png%3Falt%3Dmedia%26token%3D0b1dc3b9-1a36-4906-9a4c-725bd0cca06f&width=768&dpr=3&quality=100&sign=3f3dcf33&sv=2) Vous pouvez également configurer le proxy directement via l’interface SnowBot du compte, en allant dans les paramètres du compte. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FUOrbr26xfDDUuT7IlBzw%252Fimage.png%3Falt%3Dmedia%26token%3D88fa0a11-9b9e-4da9-9f82-56563edc3312&width=768&dpr=3&quality=100&sign=fc63548c&sv=2) [hashtag](https://docs.snowbot.eu/espace-debutant/proxy#site) Site ----------------------------------------------------------------------- Au fur et à mesure, je vous partagerai des sites. À savoir que certains sites peuvent être blacklistés du jour au lendemain. Je partage l’information, mais si votre proxy ne fonctionne pas, je ne pourrai pas en être tenu responsable. Je vous laisse contacter le support avant l’achat. Vous devez prendre une ip 4g ou une ip ISP france : [Lien du sitearrow-up-right](https://proxy-seller.com/fr/?partner=DZ3IAPN9FM2T5O) ### [hashtag](https://docs.snowbot.eu/espace-debutant/proxy#comment-creer-vos-propres-proxys-4g) Comment créer vos propres proxys 4G **Depuis plusieurs années, j’ai décidé de créer mes propres proxys 4G.** J’en avais marre de payer pour des proxys souvent blacklistés ou partagés entre plusieurs personnes. Un **proxy 4G** vous permet de changer d’adresse IP autant de fois que vous le souhaitez, pour un **coût minime**. Je vais vous présenter **un outil simple de gestion**, et si cela vous intéresse, je pourrai également faire **un tutoriel expliquant comment monter une ferme de clés 4G**. **Pour commencer, vous devez disposer d’un téléphone Android, d’une carte SIM ou d’une clé 4G, ainsi que d’un ordinateur.** circle-check Pour le prenium vous avez -20 % : 3GD3TUDGAX Ce tutoriel se concentrera essentiellement sur l’utilisation d’un **téléphone Android**, mais si je reçois des demandes, je pourrai réaliser **un tutoriel plus complet** couvrant d’autres configurations. circle-info À savoir que la création et l’utilisation sont gratuites, mais je vous conseille de prendre l’offre à 9 dollars par mois pour plus de stabilité et pour pouvoir réinitialiser l’adresse IP afin d’exploiter la fonctionnalité proxy. Rendez vous d'abord sur ce lien : [Clique Iciarrow-up-right](https://proxidize.com/get/13342/) Une fois inscrit, rendez-vous sur votre téléphone Android, ouvrez le Play Store et téléchargez l’application. [Clique Iciarrow-up-right](https://play.google.com/store/apps/details?id=com.proxidize.proxidizeandroidagent&hl=fr) Lancer l'application et appuyer sur scan : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FrRiITcU7GUJniymRgfN4%252Fimage.png%3Falt%3Dmedia%26token%3Dfbea0aeb-1640-4c1c-bac6-5d1e8c99ff33&width=768&dpr=3&quality=100&sign=ab1b020c&sv=2) Sur le site web où vous vous êtes inscrit, en haut à droite, vous trouverez un QR code. Scannez-le avec votre téléphone. Ensuite, donnez-lui un nom de périphérique : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FlEtgFsisfrPdjgRVNV7r%252Fimage.png%3Falt%3Dmedia%26token%3Db0c074e2-5661-4a47-8786-db53af2a9964&width=768&dpr=3&quality=100&sign=6f2f423e&sv=2) Ensuite, donnez-lui un nom de périphérique : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F0NAUbz3VzClCUgTkc7r1%252Fimage.png%3Falt%3Dmedia%26token%3D593f0aea-b1c7-4fe3-b5e8-4919952e8f61&width=768&dpr=3&quality=100&sign=1b487300&sv=2) ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FM3YtfFXopr0uTUJmk970%252Fimage.png%3Falt%3Dmedia%26token%3D9ac33fa2-ef2e-4415-afb7-b3cc372af408&width=768&dpr=3&quality=100&sign=56e6f597&sv=2) Sur le deuxième écran à droite, appuyez sur Google, puis sélectionnez le logo de l’application : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F2wpPMycCkcfzUW8l69oX%252Fimage.png%3Falt%3Dmedia%26token%3D2f39e01e-353a-4d3d-95af-423a92e169ca&width=768&dpr=3&quality=100&sign=4b073f9&sv=2) Puis sur le dernier appuyer sur toujours autoriser : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FTxiNTlThWWd5WM9ZCjXw%252Fimage.png%3Falt%3Dmedia%26token%3Dd5828b31-67cb-44c2-bc42-29d447bd6f05&width=768&dpr=3&quality=100&sign=fbe0e6b2&sv=2) ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FpruvWwdkUs8reORgGdyP%252Fimage.png%3Falt%3Dmedia%26token%3D8e6a9ba5-cb69-47c0-9fb8-2a58bdeb06d6&width=768&dpr=3&quality=100&sign=f5cfd4ad&sv=2) Voila rendez-vous maintenant sur le site dans l'onglet proxies : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252Fnkj2rShvS6ezWtSq4auO%252Fimage.png%3Falt%3Dmedia%26token%3Da3dc0789-a29f-46ab-bfc9-d5d106343a53&width=768&dpr=3&quality=100&sign=61df68dc&sv=2) Et ensuite, copiez toutes les informations que vous renseignez dans SnowBot 🙂 circle-check Pour le prenium vous avez -20 % : 3GD3TUDGAX ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FNwYoZwbsXUBPogLCF21N%252Fimage.png%3Falt%3Dmedia%26token%3D3b10654b-43ec-4b4f-9da5-4037c1f9fabf&width=768&dpr=3&quality=100&sign=8f4f612e&sv=2) [PrécédentTutoriel videochevron-left](https://docs.snowbot.eu/espace-debutant/tutoriel-video) [SuivantTechnique bottingchevron-right](https://docs.snowbot.eu/espace-debutant/technique-botting) Mis à jour il y a 2 mois * [Information](https://docs.snowbot.eu/espace-debutant/proxy#information) * [Configuration](https://docs.snowbot.eu/espace-debutant/proxy#configuration) * [Site](https://docs.snowbot.eu/espace-debutant/proxy#site) * [Comment créer vos propres proxys 4G](https://docs.snowbot.eu/espace-debutant/proxy#comment-creer-vos-propres-proxys-4g) --- # Mode Développeur | Snowbot Docs **Bienvenue dans l’espace développeur.** Cet espace est réservé aux plus curieux d’entre vous et vous offre une liberté totale pour concevoir, modifier et exploiter vos trajets sans aucune limite. _PS : Pour cette partie de la documentation, vous devrez vous appuyer sur la section « mode développeur » directement intégrée au bot._ Pour commencer, vous devez vous rendre dans l’onglet **Options** de Snowbot, puis activer le **Mode développeur**. En cliquant sur **Activé**, vous commencerez à recevoir l’ensemble des paquets **entrants et sortants** du bot. Vous pouvez choisir d’afficher les paquets **Dofus 2.0** ou **Dofus 3.0**. Vous avez également la possibilité de **vider la console de logs** en cliquant sur **Vider l’historique**, ce qui est particulièrement pratique lorsque de nombreux logs se sont accumulés. Il est aussi possible **d’exporter tous les paquets reçus et envoyés**, une fonctionnalité très utile pour les analyser, par exemple avec ChatGPT. Enfin, vous pouvez **filtrer l’affichage des paquets** en choisissant entre les **paquets entrants** et les **paquets sortants**. ### [hashtag](https://docs.snowbot.eu/trajets/mode-developpeur#utilisation-pour-dofus-pc) Utilisation pour Dofus PC : #### [hashtag](https://docs.snowbot.eu/trajets/mode-developpeur#etape-1-lire-un-message) Etape 1 : lire un message Voici la valeur que nous souhaitons récupérer dans notre exemple : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FOFx5nQuQGRlAphvjTfjV%252Fimage.png%3Falt%3Dmedia%26token%3Dd196b68e-444d-4505-9b97-a5901bfa8030&width=768&dpr=3&quality=100&sign=ac5fd064&sv=2) Dans notre exemple nous souhaitons savoir les information sur le coffre d'havre sac . Pour se faire nous remarquons que le packet ExchangeStartedWithStorageEvent contient une variable storage\_max\_slot qui renvoie une valeur si le personnage ouvre le coffre. Voici comment je **récupère cette valeur** dans mon script : La console nous donnera donc les informations du storage utilisé : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FY7ljPtDLmizn5neVqELM%252Fimage.png%3Falt%3Dmedia%26token%3D4243f90d-4118-4c71-9e6a-dbed99e68f62&width=768&dpr=3&quality=100&sign=e2781e40&sv=2) #### [hashtag](https://docs.snowbot.eu/trajets/mode-developpeur#etape-2-envoyer-un-message) Etape 2 : envoyer un message Voici le message que nous allons envoyer : Nous allons **envoyer le message** HavenBagEnterRequest de rentrer et sortir de l'havre sac. Voici mon rendu : Dans notre exemple ici, la fonction **developer:createMessage("**HavenBagEnterRequest**")** nous permet d'instancier le message. Ensuite nous remplissons la structure du message et nous pouvons l'envoyer au serveur. [arrow-up-right](https://web.archive.org/web/20241005023012mp_/https://doc.snowbot.eu/trajets/methodes/message/sendtrademessage) ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FrQtHfibiVTR3z4Bb19Ab%252Fimage.png%3Falt%3Dmedia%26token%3D76b35430-3617-4807-81f6-7d91a1e0042d&width=768&dpr=3&quality=100&sign=cfdbeacb&sv=2) [PrécédentBot "Banque"chevron-left](https://docs.snowbot.eu/trajets/bot-banque) [SuivantCompte controleurchevron-right](https://docs.snowbot.eu/trajets/compte-controleur) Mis à jour il y a 2 mois Copier ffunction move() end function messagesRegistering() developer:registerMessage("ExchangeStartedWithStorageEvent", onExchangeStartedWithStorage) end function onExchangeStartedWithStorage(message) global:printMessage("storage_max_slot = " .. tostring(message.storage_max_slot)) global:printMessage("exchange_type = " .. tostring(message.exchange_type)) end Copier function move() end function messagesRegistering() developer:registerMessage("CurrentMapMessage", onMap) end function onMap(message) monMessage = developer:createMessage("HavenBagEnterRequest") monMessage.owner = 248522 developer:sendMessage(monMessage, false) global:printMessage("je rentre") end --- # Compte controleur | Snowbot Docs [hashtag](https://docs.snowbot.eu/trajets/compte-controleur#pour-commencer) Pour commencer ----------------------------------------------------------------------------------------------- Dans ce chapitre, nous allons voir des exemples de **contrôleur de compte**. Un contrôleur vous permet de contrôler Snowbot de **A à Z**. Il sert à automatiser toutes vos **actions récurrentes**. Avec un contrôleur, il est possible de faire facilement plusieurs choses : créer un personnage sur un compte, ajouter des comptes à votre instance Snowbot, gérer les connexions et déconnexions, etc. Pour commencer, rendez-vous dans Fichier, puis dans Gestionnaire de comptes, et cliquez sur : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252FiDFVPRWjkmB38ZceQDwd%252Fimage.png%3Falt%3Dmedia%26token%3D89fa0ddc-d829-49e7-bd7c-9c5bfa3d08e2&width=768&dpr=3&quality=100&sign=92597f3f&sv=2) Vous avez simplement à charger un script, comme sur un personnage classique, puis à le lancer. ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252F5vht0GJbAUeKqQ3Ls09h%252Fimage.png%3Falt%3Dmedia%26token%3Dc0c7f03c-ef24-40cf-82b0-9932f4c28075&width=768&dpr=3&quality=100&sign=c631161b&sv=2) [hashtag](https://docs.snowbot.eu/trajets/compte-controleur#exemple) Exemple --------------------------------------------------------------------------------- Dans mon exemple je vais faire en sorte de print les comptes charger sur mon instance snowbot : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252Fjn1IzUY8HfQs4pLLU38o%252Fimage.png%3Falt%3Dmedia%26token%3D404440bb-dadf-4440-9beb-c370764d5e38&width=768&dpr=3&quality=100&sign=d024b4d6&sv=2) Ensuite nous allons décharger le compte qui s'appelle : "test" : [PrécédentMode Développeurchevron-left](https://docs.snowbot.eu/trajets/mode-developpeur) [SuivantNavigationchevron-right](https://docs.snowbot.eu/methodes/navigation) Mis à jour il y a 2 mois * [Pour commencer](https://docs.snowbot.eu/trajets/compte-controleur#pour-commencer) * [Exemple](https://docs.snowbot.eu/trajets/compte-controleur#exemple) Copier function move() local accounts = snowbotController:getUsernameLoadedAccounts() if not accounts or #accounts == 0 then global:printMessage("Aucun compte chargé") else global:printMessage("Comptes chargés : " .. #accounts) for _, username in pairs(accounts) do global:printMessage(username) end end snowbotController:delay(60000) end Copier function move() local username = "test" snowbotController:unloadAnAccount(username) snowbotController:delay(60000) end --- # Bot "Banque" | Snowbot Docs #### [hashtag](https://docs.snowbot.eu/trajets/bot-banque#quest-ce-quun-bot-banque) Qu’est-ce qu’un bot « banque » ? Un bot **banque** est un personnage utilisé dans un objectif précis : **centraliser l’ensemble des ressources** récoltées par vos autres personnages. Cette approche permet de **réduire considérablement les coûts d’ouverture du coffre de la banque**, mais aussi de **gagner un temps précieux** en regroupant toutes les ressources sur un seul personnage dédié à la vente. #### [hashtag](https://docs.snowbot.eu/trajets/bot-banque#securite-du-bot-banque) Sécurité du bot banque triangle-exclamation Le bot banque devenant votre véritable **trésorerie**, il est essentiel d’en renforcer la sécurité. Pour cela, le **proxy utilisé par ce compte doit être strictement réservé à celui-ci**. Il ne doit en aucun cas être partagé avec d’autres comptes, afin d’éviter le mélange des adresses IP et de limiter les risques de bannissement collatéral. #### [hashtag](https://docs.snowbot.eu/trajets/bot-banque#fonctionnement-du-bot-banque) Fonctionnement du bot banque Concrètement, lorsque vos personnages atteignent la limite de leur inventaire, ils se dirigent vers la banque comme d’habitude. Cependant, au lieu de déposer directement leurs ressources dans le coffre, ils les **transfèrent via un échange** au bot banque. Ce dernier se charge ensuite de **déposer l’ensemble des ressources dans son propre coffre**, et éventuellement de les vendre. #### [hashtag](https://docs.snowbot.eu/trajets/bot-banque#informations-importantes) Informations importantes La configuration présentée ici est spécifiquement conçue pour la **version PC**. Le principe reste le même sur la **version Touch**, bien que certaines différences de fonctionnement puissent exister. #### [hashtag](https://docs.snowbot.eu/trajets/bot-banque#configuration-banquier) Configuration - Banquier Pour cette première étape, il n'y a **rien de plus simple**. Il suffit de mettre un bot dans la banque de notre choix _(celle où vont converger nos personnages)_, ici j'ai choisi la Banque d'Astrub puis de se rendre dans les paramètres du personnage : ![](https://docs.snowbot.eu/~gitbook/image?url=https%3A%2F%2F4133065990-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOVVINraSPLxKP9A0z5KM%252Fuploads%252Fo3kTqWruwjVtZHP2WNdS%252Fimage.png%3Falt%3Dmedia%26token%3D963d7c84-9acb-482c-9e7b-0d2ab28f1468&width=768&dpr=3&quality=100&sign=aa617a5d&sv=2) Une fois arrivé ici, il ne nous reste qu'une seule chose à faire, cocher la case "_Réception des échanges"_ sur _"On"_. La configuration du personnage qui nous servira de banque est maintenant terminée. C’était l’étape la plus simple. Nous allons désormais passer à la configuration du script afin que le dépôt de l’inventaire soit effectué par les autres personnages vers le bot banque, et non plus directement dans le coffre de la banque. #### [hashtag](https://docs.snowbot.eu/trajets/bot-banque#configuration-script) Configuration – Script Pour cette partie du tutoriel, je t’invite à garder un onglet ouvert sur la section **Fonction** `**bank()**`, que nous avons vue dans la démonstration précédente, afin de suivre plus facilement la suite des opérations. Voici la fonction `bank()` de notre script **avant** la mise en place et l’utilisation du bot banque : Comme nous l’avions vu précédemment, le dépôt des ressources en banque était géré par l’instruction `npcBank = true`. Pour rappel, il s’agit d’une fonction **pré-définie de SnowBot** qui ordonne au personnage de : * parler au banquier, * ouvrir son coffre, * déposer l’intégralité de son inventaire, * puis fermer le coffre. La partie `path = "409"` permet quant à elle d’indiquer au personnage comment sortir de la banque. Cette partie restera donc **inchangée**. Nous allons maintenant supprimer `npcBank = true` et la remplacer par une **fonction personnalisée** (_custom function_). Si tu ne te souviens plus de ce que c’est, je t’invite à retourner à la section **Custom – Fonction**. Voici à quoi va ressembler notre **nouvelle fonction custom**, qui permettra au personnage de déposer ses ressources **auprès du bot banque**, plutôt que directement dans le coffre de la banque : Maintenant, nous allons ajouter cette fonction à notre script et appeler la fonction luBank() lorsque le personnage se trouve dans la banque afin de déclencher l’échange. Et c’est aussi simple que ça ! > _« Oui, mais c’est quoi_ `_idBotBanque_` _? »_ — Toi Excellente question ! `idBotBanque` correspond en réalité à **l’identifiant unique de ton personnage**. Pour l’obtenir, rien de plus simple : rends-toi dans la **console SnowBot** et tape la commande suivante : Par exemple, si ton personnage s’appelle **Bob**, tu devras taper : La console te retournera alors l’identifiant unique de ton personnage. Il ne te restera plus qu’à **copier-coller cet identifiant** à la place de `idBotBanque` dans ton script. Et voilà, c’est terminé ! 🎉 **Félicitations, ton bot banque est maintenant prêt à l’emploi !** [PrécédentActionschevron-left](https://docs.snowbot.eu/trajets/actions) [SuivantMode Développeurchevron-right](https://docs.snowbot.eu/trajets/mode-developpeur) Mis à jour il y a 2 mois Copier function bank() return { {map = "-3,-18", path = "right"}, {map = "-3,-19", path = "right"}, {map = "-3,-20", path = "right"}, {map = "-3,-17", path = "right"}, {map = "-3,-16", path = "right"}, {map = "-2,-16", path = "right"}, {map = "-2,-17", path = "right"}, {map = "-2,-18", path = "right"}, {map = "-2,-19", path = "right"}, {map = "-2,-20", path = "right"}, {map = "-1,-20", path = "right"}, {map = "-1,-19", path = "right"}, {map = "-1,-18", path = "right"}, {map = "-1,-17", path = "right"}, {map = "-1,-16", path = "right"}, {map = "0,-16", path = "top"}, {map = "0,-17", path = "top"}, {map = "0,-20", path = "bottom"}, {map = "0,-19", path = "bottom"}, {map = "0,-18", path = "right"}, {map = "1,-18", path = "right"}, {map = "2,-18", path = "right"}, {map = "3,-18", path = "right"}, -- C'EST ICI QUE CA SE PASSE : {map = "191104002", door = "261"}, -- Nous entrons dans la banque {map = "192415750", npcBank = true, path = "409"}, -- Dépôt de l'inventaire et sortie de la banque } end Copier function luBank() -- Le nom de notre fonction exchange:launchExchangeWithPlayer(idBotBanque) -- La fonction pour lancer l'échange exchange:putAllItems() -- La fonction pour déposer tous les objets de l'inventaire exchange:putKamas(0) -- La fonction pour déposer tous les kamas exchange:ready() -- La fonction pour valider l'échange end Copier function bank() return { {map = "-3,-18", path = "right"}, {map = "-3,-19", path = "right"}, {map = "-3,-20", path = "right"}, {map = "-3,-17", path = "right"}, {map = "-3,-16", path = "right"}, {map = "-2,-16", path = "right"}, {map = "-2,-17", path = "right"}, {map = "-2,-18", path = "right"}, {map = "-2,-19", path = "right"}, {map = "-2,-20", path = "right"}, {map = "-1,-20", path = "right"}, {map = "-1,-19", path = "right"}, {map = "-1,-18", path = "right"}, {map = "-1,-17", path = "right"}, {map = "-1,-16", path = "right"}, {map = "0,-16", path = "top"}, {map = "0,-17", path = "top"}, {map = "0,-20", path = "bottom"}, {map = "0,-19", path = "bottom"}, {map = "0,-18", path = "right"}, {map = "1,-18", path = "right"}, {map = "2,-18", path = "right"}, {map = "3,-18", path = "right"}, -- C'EST ICI QUE CA SE PASSE : {map = "191104002", door = "261"}, -- Nous entrons dans la banque {map = "192415750", custom = luBank, path = "409"}, -- ICI } end function luBank() -- Le nom de notre fonction exchange:launchExchangeWithPlayer(idBotBanque) -- La fonction pour lancer l'échange exchange:putAllItems() -- La fonction pour déposer tous les objets de l'inventaire exchange:putKamas(0) -- La fonction pour déposer tous les kamas exchange:ready() -- La fonction pour valider l'échange end Copier /id NomDeTonBotBanque Copier /id Bob --- # Navigation | Snowbot Docs [mapchevron-right](https://docs.snowbot.eu/methodes/navigation/map) [npcchevron-right](https://docs.snowbot.eu/methodes/navigation/npc) [PrécédentCompte controleurchevron-left](https://docs.snowbot.eu/trajets/compte-controleur) [Suivantmapchevron-right](https://docs.snowbot.eu/methodes/navigation/map) --- # Actions | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/trajets/actions#deplacements-simples) **Déplacements simples** Tout d’abord, nous allons réaliser un déplacement simple. Copier { map = "4,-19", path = "top" }, Comme vous pouvez le constater, chaque ligne contient **deux informations principales**. #### [hashtag](https://docs.snowbot.eu/trajets/actions#la-cle-map) La clé `map` La clé **map** indique la carte sur laquelle une action doit être effectuée. Cette information peut être exprimée soit en **coordonnées**, soit en **mapId**. Les **mapId** peuvent être obtenues en tapant la commande `/mapid` dans le chat de Dofus. L’utilisation des mapId est obligatoire lorsque plusieurs cartes partagent les mêmes coordonnées, notamment à l’intérieur des bâtiments. #### [hashtag](https://docs.snowbot.eu/trajets/actions#la-cle-path) La clé `path` La clé **path** définit la direction du changement de carte. Plusieurs valeurs sont possibles : * `top` : aller vers le haut * `bottom` : aller vers le bas * `right` : aller vers la droite * `left` : aller vers la gauche Par défaut, lorsque vous indiquez uniquement une direction, le personnage changera de carte en utilisant **n’importe quelle cellule disponible** dans cette direction. **Spécifier une cellule précise** Il est possible de forcer le passage par une **cellule spécifique** en ajoutant son **cellId** entre parenthèses après la direction. Par exemple : `bottom(454)`. Cette méthode est particulièrement utile sur les cartes divisées en plusieurs zones, comme celles de **Pandala**. **Directions aléatoires** Vous pouvez également rendre le déplacement aléatoire en séparant plusieurs directions à l’aide de barres verticales (`|`) : Le bot choisira alors l’une des directions de manière aléatoire. #### [hashtag](https://docs.snowbot.eu/trajets/actions#utilisation-directe-des-cellid) Utilisation directe des cellId Il est aussi possible de définir directement une **cellId**, qui correspond au numéro d’une case sur Dofus. Par exemple : Dans ce cas, le personnage se déplacera sur la cellule 125 pour changer de carte. Ces cellules sont souvent représentées par des **soleils**, indiquant un point de transition. Comme pour les directions, vous pouvez utiliser des barres verticales pour introduire de l’aléatoire : #### [hashtag](https://docs.snowbot.eu/trajets/actions#exemple-de-comportement) Exemple de comportement Dans l’exemple ci-dessous, le personnage effectuera les actions suivantes : * Sur la carte de coordonnées **1,1**, il changera de carte par la droite * Sur la carte de coordonnées **2,1**, il changera de carte par le bas via la cellule **452** * Sur la carte de coordonnées **2,2**, il changera de carte par la gauche * Sur la carte de coordonnées **1,2**, il marchera sur la cellule **350** pour changer de carte * * * ### [hashtag](https://docs.snowbot.eu/trajets/actions#recoltes-et-combats) **Récoltes et combats** Nous savons faire des déplacements simples, nous allons désormais ordonner à notre personnage de récolter et/ou combattre sur une carte. Je me suis contenté d’ajouter `fight = true` et `gather = true` afin d’indiquer au personnage qu’il doit **combattre** et/ou **récolter** sur la carte concernée. À titre d’information, `true` signifie _vrai_ et `false` signifie _faux_. Il est donc logique que lorsque vous définissez `fight = true` sur une carte, cela signifie que vous souhaitez y effectuer des combats. #### [hashtag](https://docs.snowbot.eu/trajets/actions#traduction-en-francais) Traduction en français * Sur la carte de coordonnées **4,-20**, le personnage combattra puis changera de carte par la droite pour arriver en **5,-20**. * Sur la carte de coordonnées **5,-20**, le personnage récoltera puis changera de carte par le bas pour arriver en **5,-19**. * Sur la carte de coordonnées **5,-19**, le personnage combattra et récoltera, puis changera de carte par la gauche pour arriver en **4,-19**. * Sur la carte de coordonnées **7,12**, le personnage combattra dès que possible sur cette carte (utile, par exemple, en donjon). #### [hashtag](https://docs.snowbot.eu/trajets/actions#attention) Attention Si vous souhaitez **combattre uniquement sur une seule carte** ou **récolter uniquement sur une seule carte**, utilisez les options `forcefight` et `forcegather`. Dans ce cas, le bot restera sur la carte et continuera à combattre ou à récolter, en attendant que de nouvelles ressources soient disponibles. circle-exclamation Chose à savoir, les fonctions gather et fight ne fonctionnent pas dans les fonctions bank. #### [hashtag](https://docs.snowbot.eu/trajets/actions#regeneration) Régénération La régénération s’effectue automatiquement avant le début d’un combat si la vie du personnage est inférieure au seuil minimal défini dans l’interface. Il est également possible de **forcer la régénération** pour d’autres actions, comme la récolte ou l’exécution d’actions personnalisées. J’ai ajouté `regeneration = true` afin d’indiquer au personnage qu’il doit se régénérer avant de commencer son action. #### [hashtag](https://docs.snowbot.eu/trajets/actions#traduction-en-francais-1) Traduction en français Sur la carte de coordonnées **5,-20**, le personnage se régénérera, puis effectuera une récolte, avant de changer de carte par le bas. circle-exclamation Cette méthode fonctionne uniquement en fonction move. N’oubliez pas que cette méthode est inutile pour les combats car le processus est **automatique**. ### [hashtag](https://docs.snowbot.eu/trajets/actions#objets-interactifs) **Objets interactifs** Un objet interactif est un objet qui nécessite que le joueur clique dessus pour l’utiliser. C’est le cas des portes, de certains escaliers, de leviers, etc... Il est possible d’utiliser des objets interactifs avec SnowBot. Il faut **remplacer path par door**. Copier Dans cet exemple, le personnage sur la carte de coordonnées 4,-20 utilisera l'objet interactif de cellule id 254. **Celulle kwa ?** Il s’agit du numéro de la case sur Dofus. Regarde l’explication de l’onglet « Carte » dans la partie « Interface » de la documentation si tu souhaites savoir comment l'obtenir. Tu peux par la même occasion ajouter path et door sur la même ligne, le personnage utilisera d’abord l’objet interactif puis changera de carte. C’est très utile pour les cartes qui comportent un levier ou alors pour utiliser des puits. ### [hashtag](https://docs.snowbot.eu/trajets/actions#zaap-zaapi-and-havre-sac) **Zaap, Zaapi & Havre-Sac** Nous allons voir comment utiliser les zaaps, zaapis et havre-sac. Tout se déroule dans la fonction path, dans laquelle il suffit de mettre les syntaxes ci-dessous. * `zaap(mapid)` permettant d’utiliser un zaap. mapid représente la mapid de destination. * `zaapi(mapid)` permettant d’utiliser un zaapi. mapid représente la mapid de destination. * `havenbag` permettant de rejoindre ou quitter l’havre-sac. J’ai l’impression que le petit loup a besoin d’un exemple. Copier Ce qui donne en français: * Le personnage sur la carte de coordonnées -2,0 utilisera le zaap de la carte pour aller sur la mapid « 1588964 ». * Le personnage sur la carte de coordonnées -29,-50 utilisera le zaapi de la carte pour aller sur la mapid « 5486545 ». * Le personnage sur la carte de coordonnées 5,-11 entrera dans l’havresac. ### [hashtag](https://docs.snowbot.eu/trajets/actions#retour-en-banque) **Retour en banque** Vous pouvez mettre en banque vos objets de manière automatique. Lorsque npcBank (avec le B majuscule !) est en true, le personnage comprendra qu’il devra parler au banquier pour déposer tous ses objets. Copier * Sur la carte de coordonnées « 9856523 », le personnage utilisera la banque pour déposer tous ses objets et sortira de la banque sur le cellid 406. Si vous souhaitez effectuer des actions dans la banque, comme par exemple récupérer un objet, vous devez utiliser une fonction customisée pour ouvrir la banque. Vous verrez cela plus tard. c: ### [hashtag](https://docs.snowbot.eu/trajets/actions#retour-en-maison) **Retour en maison** Vous avez aussi la possibilité de déposer les objets de votre personnage dans une maison à l’aide de `lockedHouse` et `lockedStorage` comme ci-dessous. Copier Il suffit d’ajouter `lockedHouse = "cellid|motdepasse|pseudo_propriétaire"` ainsi que `lockedStorage = "cellid|motdepasse"`. Cependant petit loup, tu dois savoir qu’il faut obligatoirement utiliser des mapids et non des coordonnées sur ces cartes car l’extérieur et l’intérieur de la maison ont les mêmes coordonnées ce qui provoquerait un bug ! triangle-exclamation Si le personnage est le propriétaire de la maison, utilisez « -1 » comme mot de passe. En français ça donne: * Le personnage sur la carte de mapid 4548789 utilisera la porte de d4rkmonster de cellid 133 avec le mot de passe 12345678. * Le personnage sur la carte de mapid 1845631 utilisera la porte de cellid 458 avec le mot de passe 12345678. Si votre serveur n’est pas encore fusionné, n’ajoutez pas « |pseudo\_propriétaire » dans lockedHouse. [PrécédentDoor - Utilisation d'une portechevron-left](https://docs.snowbot.eu/trajets/door-utilisation-dune-porte) [SuivantBot "Banque"chevron-right](https://docs.snowbot.eu/trajets/bot-banque) Mis à jour il y a 2 mois * [Déplacements simples](https://docs.snowbot.eu/trajets/actions#deplacements-simples) * [Récoltes et combats](https://docs.snowbot.eu/trajets/actions#recoltes-et-combats) * [Objets interactifs](https://docs.snowbot.eu/trajets/actions#objets-interactifs) * [Zaap, Zaapi & Havre-Sac](https://docs.snowbot.eu/trajets/actions#zaap-zaapi-and-havre-sac) * [Retour en banque](https://docs.snowbot.eu/trajets/actions#retour-en-banque) * [Retour en maison](https://docs.snowbot.eu/trajets/actions#retour-en-maison) Copier top|bottom Copier 125 Copier 256|45|489 Copier function move() return { { map="1,1", path = "right" }, { map="2,1", path = "bottom(452)" }, { map="2,2", path = "left" }, { map="1,2", path = "350" }, } end Copier function move() return { { map = "4,-20", path = "right" , fight = true }, { map = "5,-20", path = "bottom", gather = true }, { map = "5,-19", path = "left", fight = true, gather = true }, { map = "7,12", forcefight = true }, { map = "7,12", forcegather = true }, } end Copier { map = "7,12", forcefight = true }, { map = "7,12", forcegather = true }, Copier { map = "5,-20", path = "bottom", gather = true, regeneration = true }, Copier { map = "4,-20", door = "254" }, Copier { map = "-2,0", path = "zaap(1588964)" }, { map = "-29,-50", path = "zaapi(5486545)" }, { map = "5,-11", path = "havenbag" }, Copier { map = "9856523", npcBank = true, path "406" }, Copier { map = "4548789", lockedHouse = "133|12345678|d4rkmonster" }, { map = "1845631", lockedStorage = "458|12345678" }, --- # Communication | Snowbot Docs [chatchevron-right](https://docs.snowbot.eu/methodes/communication/chat) [PrécédentfightActionchevron-left](https://docs.snowbot.eu/methodes/combat/fightaction) [Suivantchatchevron-right](https://docs.snowbot.eu/methodes/communication/chat) --- # Économie | Snowbot Docs [exchangechevron-right](https://docs.snowbot.eu/methodes/economie/exchange) [salechevron-right](https://docs.snowbot.eu/methodes/economie/sale) [merchantchevron-right](https://docs.snowbot.eu/methodes/economie/merchant) [craftchevron-right](https://docs.snowbot.eu/methodes/economie/craft) [PrécédentleaveDialogchevron-left](https://docs.snowbot.eu/methodes/navigation/npc/leavedialog) [Suivantexchangechevron-right](https://docs.snowbot.eu/methodes/economie/exchange) --- # Contrôle | Snowbot Docs [accountControllerchevron-right](https://docs.snowbot.eu/methodes/controle/accountcontroller) [snowbotControllerchevron-right](https://docs.snowbot.eu/methodes/controle/snowbotcontroller) [Précédentdeveloperchevron-left](https://docs.snowbot.eu/methodes/systeme/developer) [SuivantaccountControllerchevron-right](https://docs.snowbot.eu/methodes/controle/accountcontroller) --- # Activités | Snowbot Docs [treasurechevron-right](https://docs.snowbot.eu/methodes/activites/treasure) [questchevron-right](https://docs.snowbot.eu/methodes/activites/quest) [Précédentchatchevron-left](https://docs.snowbot.eu/methodes/communication/chat) [Suivanttreasurechevron-right](https://docs.snowbot.eu/methodes/activites/treasure) --- # npc | Snowbot Docs [npcchevron-right](https://docs.snowbot.eu/methodes/navigation/npc/npc) [npcBankchevron-right](https://docs.snowbot.eu/methodes/navigation/npc/npcbank) [replychevron-right](https://docs.snowbot.eu/methodes/navigation/npc/reply) [SendReplychevron-right](https://docs.snowbot.eu/methodes/navigation/npc/sendreply) [leaveDialogchevron-right](https://docs.snowbot.eu/methodes/navigation/npc/leavedialog) [PrécédentuseByIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/usebyid) [Suivantnpcchevron-right](https://docs.snowbot.eu/methodes/navigation/npc/npc) Mis à jour il y a 2 mois --- # Combat | Snowbot Docs [fightCharacterchevron-right](https://docs.snowbot.eu/methodes/combat/fightcharacter) [fightDebugchevron-right](https://docs.snowbot.eu/methodes/combat/fightdebug) [fightSlavechevron-right](https://docs.snowbot.eu/methodes/combat/fightslave) [fightBasicchevron-right](https://docs.snowbot.eu/methodes/combat/fightbasic) [fightChallengechevron-right](https://docs.snowbot.eu/methodes/combat/fightchallenge) [fightActionchevron-right](https://docs.snowbot.eu/methodes/combat/fightaction) [Précédentcraftchevron-left](https://docs.snowbot.eu/methodes/economie/craft) [SuivantfightCharacterchevron-right](https://docs.snowbot.eu/methodes/combat/fightcharacter) --- # Système | Snowbot Docs [globalchevron-right](https://docs.snowbot.eu/methodes/systeme/global) [accountchevron-right](https://docs.snowbot.eu/methodes/systeme/account) [configchevron-right](https://docs.snowbot.eu/methodes/systeme/config) [d2datachevron-right](https://docs.snowbot.eu/methodes/systeme/d2data) [developerchevron-right](https://docs.snowbot.eu/methodes/systeme/developer) [Précédentquestchevron-left](https://docs.snowbot.eu/methodes/activites/quest) [Suivantglobalchevron-right](https://docs.snowbot.eu/methodes/systeme/global) --- # npc | Snowbot Docs **🎮Méthode** Copier npc:npc(npcId, ActionID) Interagit avec un PNJ sur la map en exécutant une action spécifique. Trouve le NPC correspondant au `npcId` sur la map actuelle et envoie une demande d'action au serveur. Attend l'ouverture du dialogue avec un court timeout. Paramètres: Nom Type Description `npcId` `number` ID du PNJ (template ID, pas l'ID contextuel). Utiliser un ID négatif comme `-20001` pour les PNJ spéciaux comme les banquiers. `ActionID` `number` ID de l'action à exécuter sur le PNJ Exemples: Exemples Copier -- Parler a un PNJ (action 3 = dialogue standard) npc:npc(123, 3) -- Ouvrir un dialogue avec le banquier d'Astrub npc:npc(-20001, 3) -- Actions courantes: -- 1 = Acheter/Vendre (ouvre le shop) -- 3 = Dialoguer (ouvre le dialogue) -- 5 = Échanger avec PNJ 1 ### [hashtag](https://docs.snowbot.eu/methodes/navigation/npc/npc#workflow-dialogue-complet-ouverture-reponse-fermeture) Workflow : dialogue complet (ouverture, réponse, fermeture) Copier npc:npc(1234, 3) -- Ouvrir le dialogue npc:reply(-1) -- Choisir la première réponse npc:leaveDialog() -- Fermer le dialogue circle-info Le `npcId` est l'ID template du PNJ (visible dans les fichiers D2O), pas l'ID contextuel de la map. Le bot trouve automatiquement le NPC sur la map. Les IDs négatifs comme `-20001` sont réservés aux PNJ spéciaux (banquiers, zaaps, etc.). [Précédentnpcchevron-left](https://docs.snowbot.eu/methodes/navigation/npc) [SuivantnpcBankchevron-right](https://docs.snowbot.eu/methodes/navigation/npc/npcbank) Mis à jour il y a 2 mois --- # SendReply | Snowbot Docs **🎮Méthode** Copier npc:SendReply(replyId) Envoie directement une réponse au serveur par son ID exact, sans conversion d'index. Cette fonction est de bas niveau et n'attend pas de confirmation du serveur. Paramètres: Nom Type Description `replyId` `number` ID exact de la réponse à envoyer Exemples: Exemple Copier -- Envoyer une reponse specifique par ID npc:SendReply(12345) circle-exclamation Contrairement à `reply()`, cette fonction n'attend pas de confirmation du serveur. Utilisez `reply()` avec un index négatif pour un usage normal. `SendReply()` est utile pour des cas spécifiques où vous avez l'ID exact. `SendReply()` est appelée en interne par `reply()`. [Précédentreplychevron-left](https://docs.snowbot.eu/methodes/navigation/npc/reply) [SuivantleaveDialogchevron-right](https://docs.snowbot.eu/methodes/navigation/npc/leavedialog) Mis à jour il y a 2 mois --- # Personnage | Snowbot Docs [characterchevron-right](https://docs.snowbot.eu/methodes/personnage/character) [inventorychevron-right](https://docs.snowbot.eu/methodes/personnage/inventory) [mountchevron-right](https://docs.snowbot.eu/methodes/personnage/mount) [jobchevron-right](https://docs.snowbot.eu/methodes/personnage/job) [PrécédentsnowbotControllerchevron-left](https://docs.snowbot.eu/methodes/controle/snowbotcontroller) [Suivantcharacterchevron-right](https://docs.snowbot.eu/methodes/personnage/character) --- # leaveDialog | Snowbot Docs **🎮Méthode** Copier npc:leaveDialog() Ferme le dialogue en cours avec un PNJ. Envoie une demande de fermeture au serveur et attend la confirmation. Retourne: `void` Exemples: Exemples Copier -- Fermer un dialogue apres interaction npc:npc(123, 3) npc:reply(-1) npc:leaveDialog() global:printMessage("Dialogue termine") -- Fermer la banque apres operations npc:npcBank(-1) exchange:putAllItems() npc:leaveDialog() -- ou exchange:leave() (equivalent) -- Sortir d'un dialogue sans repondre npc:npc(456, 3) -- On decide de ne pas continuer npc:leaveDialog() circle-info Équivalent à `exchange:leave()` - les deux fonctions peuvent être utilisées pour fermer n'importe quel type de dialogue (PNJ, banque, échange, etc.). [PrécédentSendReplychevron-left](https://docs.snowbot.eu/methodes/navigation/npc/sendreply) [SuivantÉconomiechevron-right](https://docs.snowbot.eu/methodes/economie) Mis à jour il y a 2 mois --- # fightDebug | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightdebug#delay) delay **🎮Méthode** Copier fightDebug:delay(timeDelay) Ajoute un delai pendant le combat (pour debug). **Paramètres:** Nom Type Description `timeDelay` `number` Delai en millisecondes **Exemple:** Exemple Copier fightDebug:delay(1000) -- Pause de 1 seconde * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightdebug#print) print **🎮Méthode** Copier fightDebug:print(msgTxt) Affiche un message de debug en combat. **Paramètres:** Nom Type Description `msgTxt` `string` Message a afficher **Exemple:** Exemple Copier fightDebug:print("Position: " .. fightCharacter:getCellId()) fightDebug:print("PA restants: " .. fightCharacter:getAP()) [PrécédentfightCharacterchevron-left](https://docs.snowbot.eu/methodes/combat/fightcharacter) [SuivantfightSlavechevron-right](https://docs.snowbot.eu/methodes/combat/fightslave) Mis à jour il y a 2 mois * [delay](https://docs.snowbot.eu/methodes/combat/fightdebug#delay) * [print](https://docs.snowbot.eu/methodes/combat/fightdebug#print) --- # merchant | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/economie/merchant#buyitem) buyItem **🎮Méthode** Copier merchant:buyItem(Gid, Quantity) Achete un objet chez un marchand joueur. **Paramètres:** Nom Type Description `Gid` `number` GID de l'objet `Quantity` `number` Quantite a acheter **Exemple:** example.lua Copier merchant:buyItem(289, 10) * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/merchant#existitem) existItem **🎮Méthode** Copier merchant:existItem(Gid) Verifie si un objet est disponible chez le marchand. **Paramètres:** Nom Type Description `Gid` `number` GID de l'objet **Retourne:** `boolean` - true si l'objet est disponible **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/merchant#open) open **🎮Méthode** Ouvre le magasin d'un marchand joueur. **Paramètres:** Nom Type Description `name` `string` Nom du marchand **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/merchant#priceitem) priceItem **🎮Méthode** `merchant:open(name)` Retourne le prix d'un objet chez le marchand. **Paramètres:** Nom Type Description `Gid` `number` GID de l'objet **Retourne:** `object` - Prix de l'objet **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/merchant#quantityitem) quantityItem **🎮Méthode** Retourne la quantite disponible d'un objet. **Paramètres:** Nom Type Description `Gid` `number` GID de l'objet **Retourne:** `object` - Quantite disponible **Exemple:** [Précédentsalechevron-left](https://docs.snowbot.eu/methodes/economie/sale) [Suivantcraftchevron-right](https://docs.snowbot.eu/methodes/economie/craft) Mis à jour il y a 2 mois * [buyItem](https://docs.snowbot.eu/methodes/economie/merchant#buyitem) * [existItem](https://docs.snowbot.eu/methodes/economie/merchant#existitem) * [open](https://docs.snowbot.eu/methodes/economie/merchant#open) * [priceItem](https://docs.snowbot.eu/methodes/economie/merchant#priceitem) * [quantityItem](https://docs.snowbot.eu/methodes/economie/merchant#quantityitem) example.lua Copier if merchant:existItem(289) then print("Objet disponible!") end Copier merchant:open(name) example.lua Copier merchant:open("NomDuMarchand") Copier merchant:priceItem(Gid) example.lua Copier local price = merchant:priceItem(289) print("Prix: " .. price) Copier merchant:quantityItem(Gid) example.lua Copier local qty = merchant:quantityItem(289) print("Disponible: " .. qty) --- # craft | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/economie/craft#putitem) PutItem **🎮Méthode** Copier craft:PutItem(GID, quantity) Place un ingredient dans l'interface de craft/atelier. NECESSITE UN ABONNEMENT PREMIUM (verifie desktopAccess et craftOther ou isFullAccess). Appelle exchange.putItem() en interne pour placer l'objet depuis l'inventaire vers l'interface de craft. L'atelier doit etre ouvert au prealable. **Paramètres:** Nom Type Description `GID` `number` GID de l'ingredient (identifiant general de l'objet) `quantity` `number` Quantite a placer dans l'interface **Exemple:** example.lua Copier -- Placer les ingredients pour une recette -- Exemple: Crafter du pain (necessite de la farine) craft:PutItem(289, 10) -- 10x Farine -- Exemple complet avec plusieurs ingredients -- Recette fictive necessitant Fer + Bois + Ficelle craft:PutItem(312, 2) -- 2x Fer craft:PutItem(460, 1) -- 1x Bois craft:PutItem(425, 1) -- 1x Ficelle -- Lancer le craft apres avoir place les ingredients craft:Ready() -- Avec verification d'inventaire avant de placer local fer = inventory:itemCount(312) local bois = inventory:itemCount(460) if fer >= 2 and bois >= 1 then craft:PutItem(312, 2) craft:PutItem(460, 1) craft:Ready() global:printSuccess("Craft lance!") else global:printError("Ingredients manquants!") global:printMessage("Fer: " .. fer .. "/2, Bois: " .. bois .. "/1") end circle-exclamation NECESSITE un abonnement premium. Affiche "Vous n'avez pas d'abonnement pour l'artisanat." si non autorise. L'ingredient doit etre present dans l'inventaire. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/craft#changequantitytocraft) ChangeQuantityToCraft **🎮Méthode** Definit le nombre d'objets a fabriquer pour le prochain craft. NECESSITE UN ABONNEMENT PREMIUM. Envoie le packet 6597 (ExchangeObjectTransfertQuantityMessage) pour modifier la quantite. Attend 1 seconde puis suspend le script jusqu'a reception du packet 176 (confirmation). **Paramètres:** Nom Type Description `Quantity` `number` Quantite a fabriquer (generalement 1 a 999) **Exemple:** circle-exclamation La quantite doit etre compatible avec les ingredients places. Si vous placez 10 farines et demandez 20 pains, le craft echouera. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/craft#ready) Ready **🎮Méthode** Lance la fabrication avec les ingredients places dans l'interface. NECESSITE UN ABONNEMENT PREMIUM. Attend 1 seconde, puis envoie un ExchangeReadyMessage avec ready=true et le characterId du personnage. Suspend le script jusqu'a reception du packet 176 (confirmation de fin de craft). **Retourne:** `void` **Exemple:** circle-exclamation NECESSITE un abonnement premium. Assurez-vous que tous les ingredients sont places via PutItem() avant d'appeler Ready(). Le craft peut echouer si la recette est incorrecte ou les ingredients insuffisants. [Précédentmerchantchevron-left](https://docs.snowbot.eu/methodes/economie/merchant) [SuivantCombatchevron-right](https://docs.snowbot.eu/methodes/combat) Mis à jour il y a 2 mois * [PutItem](https://docs.snowbot.eu/methodes/economie/craft#putitem) * [ChangeQuantityToCraft](https://docs.snowbot.eu/methodes/economie/craft#changequantitytocraft) * [Ready](https://docs.snowbot.eu/methodes/economie/craft#ready) Copier craft:ChangeQuantityToCraft(Quantity) example.lua Copier -- Definir la quantite avant le craft craft:ChangeQuantityToCraft(10) -- Workflow complet: crafter 50 pains -- 1. Placer les ingredients (1 farine = 1 pain) craft:PutItem(289, 50) -- 50x Farine -- 2. Definir la quantite craft:ChangeQuantityToCraft(50) -- 3. Lancer la fabrication craft:Ready() -- Craft en masse avec boucle local quantiteParCraft = 100 local totalACrafter = 500 local craftsNecessaires = totalACrafter / quantiteParCraft for i = 1, craftsNecessaires do craft:PutItem(gidIngredient, quantiteParCraft) craft:ChangeQuantityToCraft(quantiteParCraft) craft:Ready() global:printMessage("Craft " .. i .. "/" .. craftsNecessaires) global:delay(2000) -- Attendre entre chaque craft end Copier craft:Ready() example.lua Copier -- Sequence complete de craft automatise function crafterRecette(ingredients, quantite) -- Verifier et placer tous les ingredients for _, ingredient in ipairs(ingredients) do local enStock = inventory:itemCount(ingredient.gid) local besoin = ingredient.qty * quantite if enStock < besoin then global:printError("Manque " .. d2data:getItemName(ingredient.gid) .. ": " .. enStock .. "/" .. besoin) return false end craft:PutItem(ingredient.gid, besoin) end -- Definir la quantite craft:ChangeQuantityToCraft(quantite) -- Lancer la fabrication craft:Ready() global:printSuccess("Craft de " .. quantite .. " objets lance!") return true end -- Utilisation: crafter 10 pains (1 farine = 1 pain) local recettePain = { {gid = 289, qty = 1} -- 1 Farine par pain } crafterRecette(recettePain, 10) -- Script de boulangerie automatique function boulangerieAuto() local farine = inventory:itemCount(289) while farine >= 100 do craft:PutItem(289, 100) craft:ChangeQuantityToCraft(100) craft:Ready() global:delay(3000) -- Attendre la fin du craft farine = inventory:itemCount(289) global:printMessage("Farine restante: " .. farine) end global:printSuccess("Boulangerie terminee!") end --- # reply | Snowbot Docs **🎮Méthode** Copier npc:reply(replyIndex) Sélectionne et envoie une réponse dans un dialogue PNJ. Le paramètre peut être soit un INDEX NÉGATIF (`-1`, `-2`, etc.) pour sélectionner par position dans la liste des réponses, soit un ID POSITIF direct de réponse. Attend la prochaine question ou la fin du dialogue, avec un timeout de 5 secondes. Paramètres: Nom Type Description `replyIndex` `number` Index négatif (`-1` = 1ère réponse, `-2` = 2ème, etc.) OU ID positif direct de la réponse Retourne: `boolean` - `true` si une réponse/fin de dialogue a été reçue, `false` si timeout Exemples: Exemples Copier -- Choisir la première réponse (index -1) npc:reply(-1) -- Choisir la deuxième réponse npc:reply(-2) -- Choisir par ID direct (si vous connaissez l'ID) npc:reply(12345) 1 ### [hashtag](https://docs.snowbot.eu/methodes/navigation/npc/reply#exemple-navigation-de-dialogue) Exemple : navigation de dialogue Copier npc:npc(123, 3) -- Ouvrir dialogue npc:reply(-1) -- Première réponse npc:reply(-2) -- Deuxième réponse du menu suivant npc:leaveDialog() -- Fermer 2 ### [hashtag](https://docs.snowbot.eu/methodes/navigation/npc/reply#exemple-ouvrir-le-coffre-du-banquier) Exemple : ouvrir le coffre du banquier Copier npc:npc(-20001, 3) -- Parler au banquier npc:reply(-1) -- "Accéder a mon coffre" 3 ### [hashtag](https://docs.snowbot.eu/methodes/navigation/npc/reply#exemple-workflow-de-quete-avec-verification) Exemple : workflow de quête avec vérification Copier npc:npc(questNpcId, 3) local success = npc:reply(-1) if success then global:printSuccess("Quete acceptee!") else global:printWarning("Pas de reponse du PNJ") end circle-info IMPORTANT: Les index négatifs sont plus pratiques car ils s'adaptent automatiquement aux réponses disponibles. L'index `-1` correspond à la première réponse visible, `-2` à la deuxième, etc. Les ID positifs sont utiles quand vous connaissez l'ID exact de la réponse souhaitée. [PrécédentnpcBankchevron-left](https://docs.snowbot.eu/methodes/navigation/npc/npcbank) [SuivantSendReplychevron-right](https://docs.snowbot.eu/methodes/navigation/npc/sendreply) Mis à jour il y a 2 mois * [Exemple : navigation de dialogue](https://docs.snowbot.eu/methodes/navigation/npc/reply#exemple-navigation-de-dialogue) * [Exemple : ouvrir le coffre du banquier](https://docs.snowbot.eu/methodes/navigation/npc/reply#exemple-ouvrir-le-coffre-du-banquier) * [Exemple : workflow de quête avec vérification](https://docs.snowbot.eu/methodes/navigation/npc/reply#exemple-workflow-de-quete-avec-verification) --- # account | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/systeme/account#name) name 🎮Méthode Copier account:name() Retourne le nom du compte (username de connexion). Retourne: `string` - Nom du compte Exemple: example.lua Copier local accountName = account:name() global:printMessage("Compte: " .. accountName) * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/account#isproxyenabled) isProxyEnabled 🎮Méthode Copier account:isProxyEnabled() Vérifie si un proxy est activé pour ce compte. Retourne: `boolean` - true si un proxy est configuré et actif Exemple: example.lua Copier if account:isProxyEnabled() then global:printMessage("Proxy actif") else global:printMessage("Pas de proxy") end * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/account#getassignedproxy) getAssignedProxy 🎮Méthode Retourne la configuration complète du proxy assigné au compte. Retourne: `string` - Configuration au format "ip:port:username:password", ou chaîne vide si aucun proxy Exemple: circle-info Le format retourné dépend des champs configurés. Peut être `ip:port` ou `ip:port:user:pass`. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/account#getproxyip) getProxyIP 🎮Méthode Retourne l'adresse IP du proxy. Retourne: `string` - Adresse IP du proxy, ou chaîne vide si non configuré Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/account#getproxyport) getProxyPort 🎮Méthode Retourne le port du proxy. Retourne: `string` - Port du proxy, ou chaîne vide si non configuré Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/account#getproxyusername) getProxyUsername 🎮Méthode Retourne le nom d'utilisateur du proxy (pour l'authentification). Retourne: `string` - Username du proxy, ou chaîne vide si non configuré Exemple: circle-exclamation Le mot de passe n'est pas exposé pour des raisons de sécurité. [Précédentglobalchevron-left](https://docs.snowbot.eu/methodes/systeme/global) [Suivantconfigchevron-right](https://docs.snowbot.eu/methodes/systeme/config) Mis à jour il y a 2 mois * [name](https://docs.snowbot.eu/methodes/systeme/account#name) * [isProxyEnabled](https://docs.snowbot.eu/methodes/systeme/account#isproxyenabled) * [getAssignedProxy](https://docs.snowbot.eu/methodes/systeme/account#getassignedproxy) * [getProxyIP](https://docs.snowbot.eu/methodes/systeme/account#getproxyip) * [getProxyPort](https://docs.snowbot.eu/methodes/systeme/account#getproxyport) * [getProxyUsername](https://docs.snowbot.eu/methodes/systeme/account#getproxyusername) Copier account:getAssignedProxy() example.lua Copier local proxyConfig = account:getAssignedProxy() if proxyConfig ~= "" then global:printMessage("Proxy: " .. proxyConfig) else global:printMessage("Aucun proxy configure") end -- Exemple de parsing de la config local parts = {} for part in proxyConfig:gmatch("[^:]+") do table.insert(parts, part) end if #parts >= 2 then local ip = parts[1] local port = parts[2] global:printMessage("IP: " .. ip .. ", Port: " .. port) end Copier account:getProxyIP() example.lua Copier local proxyIP = account:getProxyIP() if proxyIP ~= "" then global:printMessage("IP Proxy: " .. proxyIP) end Copier account:getProxyPort() example.lua Copier local proxyPort = account:getProxyPort() if proxyPort ~= "" then global:printMessage("Port Proxy: " .. proxyPort) end Copier account:getProxyUsername() example.lua Copier local proxyUser = account:getProxyUsername() if proxyUser ~= "" then global:printMessage("User Proxy: " .. proxyUser) end -- Exemple complet de verification proxy if account:isProxyEnabled() then local ip = account:getProxyIP() local port = account:getProxyPort() local user = account:getProxyUsername() global:printMessage("Proxy: " .. ip .. ":" .. port) if user ~= "" then global:printMessage("Authentification: " .. user) end end --- # npcBank | Snowbot Docs **🎮Méthode** Copier npc:npcBank(npcId) Ouvre directement l'interface de la banque via un PNJ banquier. Si `npcId = -1`, trouve automatiquement le premier banquier sur la map. Sinon, utilise le PNJ banquier spécifié. Paramètres: Nom Type Description `npcId` `number` ID du PNJ banquier, ou `-1` pour trouver automatiquement le banquier Exemples: Exemples Copier -- Ouvrir la banque automatiquement (trouve le banquier) npc:npcBank(-1) -- Ouvrir avec un banquier spécifique npc:npcBank(456) 1 ### [hashtag](https://docs.snowbot.eu/methodes/navigation/npc/npcbank#workflow-depot-en-banque) Workflow : dépôt en banque Copier npc:npcBank(-1) exchange:putAllItems() exchange:putKamas(0) exchange:leave() circle-info Utiliser `npcId = -1` est recommandé car le bot trouvera automatiquement le banquier le plus proche sur la map. Cette fonction est plus directe que `npc:npc()` + `npc:reply()` pour accéder à la banque. [Précédentnpcchevron-left](https://docs.snowbot.eu/methodes/navigation/npc/npc) [Suivantreplychevron-right](https://docs.snowbot.eu/methodes/navigation/npc/reply) Mis à jour il y a 2 mois --- # chat | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/communication/chat#sendgeneralmessage) sendGeneralMessage **🎮Méthode** Copier chat:sendGeneralMessage(content) Envoie un message dans le canal general (chat map). Appelle PacketAnalyser.envoi861() avec le channel=0 pour envoyer un ChatClientMultiMessage sur le canal general. Le message est visible par tous les joueurs presents sur la meme carte. **Paramètres:** Nom Type Description `content` `string` Contenu du message a envoyer **Retourne:** `void` **Exemple:** Copier -- Message simple dans le canal general chat:sendGeneralMessage("Bonjour tout le monde!") -- Annonce de presence local mapId = map:currentMapId() local x = map:getX(mapId) local y = map:getY(mapId) chat:sendGeneralMessage("Je suis en [" .. x .. "," .. y .. "]") -- Anti-spam: eviter d'envoyer trop de messages local lastMessage = global:remember("lastGeneralMessage") or 0 local now = global:elapsedTime() if now - lastMessage > 60000 then -- 1 minute entre chaque message chat:sendGeneralMessage("Mon message") global:editInMemory("lastGeneralMessage", now) else global:printWarning("Attendez avant d'envoyer un autre message") end circle-exclamation ATTENTION: Le canal general est visible par tous les joueurs de la carte. Evitez le spam pour ne pas etre sanctionne. Canal ID = 0. * * * ### [hashtag](https://docs.snowbot.eu/methodes/communication/chat#sendguildmessage) sendGuildMessage **🎮Méthode** Envoie un message dans le canal guilde. Appelle PacketAnalyser.envoi861() avec le channel=2 pour envoyer un ChatClientMultiMessage sur le canal guilde. Le message est visible uniquement par les membres de votre guilde. **Paramètres:** Nom Type Description `content` `string` Contenu du message **Retourne:** `void` **Exemple:** circle-info Necessite d'etre dans une guilde. Canal ID = 2. * * * ### [hashtag](https://docs.snowbot.eu/methodes/communication/chat#sendalliancemessage) sendAllianceMessage **🎮Méthode** Envoie un message dans le canal alliance. Appelle PacketAnalyser.envoi861() avec le channel=3 pour envoyer un ChatClientMultiMessage sur le canal alliance. Le message est visible par tous les membres de votre alliance. **Paramètres:** Nom Type Description `content` `string` Contenu du message a envoyer **Retourne:** `void` **Exemple:** circle-info Necessite d'etre dans une alliance. Canal ID = 3. * * * ### [hashtag](https://docs.snowbot.eu/methodes/communication/chat#sendtrademessage) sendTradeMessage **🎮Méthode** Envoie un message dans le canal commerce. Appelle PacketAnalyser.envoi861() avec le channel=5 pour envoyer un ChatClientMultiMessage sur le canal commerce. Utilise pour les annonces d'achat et de vente. **Paramètres:** Nom Type Description `content` `string` Contenu du message **Retourne:** `void` **Exemple:** circle-info Canal dedie au commerce (achat/vente). Respectez les regles du jeu concernant les annonces. Canal ID = 5. * * * ### [hashtag](https://docs.snowbot.eu/methodes/communication/chat#sendrecruitmentmessage) sendRecruitmentMessage **🎮Méthode** Envoie un message dans le canal recrutement. Appelle PacketAnalyser.envoi861() avec le channel=6 pour envoyer un ChatClientMultiMessage sur le canal recrutement. Utilise pour chercher ou proposer une guilde. **Paramètres:** Nom Type Description `content` `string` Contenu du message **Retourne:** `void` **Exemple:** circle-info Canal pour le recrutement de guilde. Utilisez avec moderation. Canal ID = 6. * * * ### [hashtag](https://docs.snowbot.eu/methodes/communication/chat#sendprivatemessage) sendPrivateMessage **🎮Méthode** Envoie un message prive a un joueur specifique. Affiche "(Prive) a \[receiver\] : \[content\]" dans les logs du bot, puis envoie un ChatClientPrivateMessage au serveur avec le contenu et un PlayerSearchCharacterNameInformation contenant le nom du destinataire. **Paramètres:** Nom Type Description `content` `string` Contenu du message `receiver` `string` Nom exact du joueur destinataire **Retourne:** `void` **Exemple:** circle-info Le joueur destinataire doit etre en ligne pour recevoir le message. Le nom doit etre exact (sensible a la casse). * * * [PrécédentCommunicationchevron-left](https://docs.snowbot.eu/methodes/communication) [SuivantActivitéschevron-right](https://docs.snowbot.eu/methodes/activites) Mis à jour il y a 2 mois * [sendGeneralMessage](https://docs.snowbot.eu/methodes/communication/chat#sendgeneralmessage) * [sendGuildMessage](https://docs.snowbot.eu/methodes/communication/chat#sendguildmessage) * [sendAllianceMessage](https://docs.snowbot.eu/methodes/communication/chat#sendalliancemessage) * [sendTradeMessage](https://docs.snowbot.eu/methodes/communication/chat#sendtrademessage) * [sendRecruitmentMessage](https://docs.snowbot.eu/methodes/communication/chat#sendrecruitmentmessage) * [sendPrivateMessage](https://docs.snowbot.eu/methodes/communication/chat#sendprivatemessage) Copier chat:sendGuildMessage(content) Copier -- Message simple dans le canal guilde chat:sendGuildMessage("Salut la guilde!") -- Notification de fin de combat function stopped() local stats = global:fightMessage() if stats then chat:sendGuildMessage("[Bot] Combat termine - XP gagnee!") end end -- Statistiques periodiques function notifyGuildStats() local niveau = character:level() local kamas = character:kamas() local pods = inventory:weight() local maxPods = inventory:maxWeight() chat:sendGuildMessage("[Bot] Niv:" .. niveau .. " | Kamas:" .. kamas .. " | Pods:" .. pods .. "/" .. maxPods) end -- Alerte inventaire plein if inventory:weight() >= inventory:maxWeight() * 0.9 then chat:sendGuildMessage("[Bot] Inventaire presque plein! Je vais vider en banque.") end Copier chat:sendAllianceMessage(content) Copier -- Message simple dans le canal alliance chat:sendAllianceMessage("Salut l'alliance!") -- Notification de position (utile pour les AVA) local mapId = map:currentMapId() local x = map:getX(mapId) local y = map:getY(mapId) local zoneName = map:getAreaName() chat:sendAllianceMessage("[Position] " .. zoneName .. " [" .. x .. "," .. y .. "]") -- Alerte de combat function joinFight() -- Logique d'agression... chat:sendAllianceMessage("[Combat] J'engage un combat en " .. map:getAreaName()) end Copier chat:sendTradeMessage(content) Copier -- Annonce de vente simple chat:sendTradeMessage("Vends ressources, MP!") -- Annonce avec inventaire local items = { { gid = 289, name = "Ble" }, { gid = 303, name = "Bois de Frene" }, { gid = 312, name = "Fer" }, } local parts = {} for _, item in ipairs(items) do local qty = inventory:itemCount(item.gid) if qty >= 100 then table.insert(parts, item.name .. " x" .. qty) end end if #parts > 0 then chat:sendTradeMessage("Vends: " .. table.concat(parts, ", ") .. " - MP!") end -- Annonce d'achat chat:sendTradeMessage("Achete Bois de Frene x1000, bon prix! MP") -- Anti-spam pour commerce (5 minutes entre annonces) function sendTradeAnnounce(msg) local lastTrade = global:remember("lastTradeMsgTime") or 0 local now = global:elapsedTime() if now - lastTrade > 300000 then -- 5 minutes chat:sendTradeMessage(msg) global:editInMemory("lastTradeMsgTime", now) return true end return false end Copier chat:sendRecruitmentMessage(content) Copier -- Recherche de guilde chat:sendRecruitmentMessage("Joueur niveau 180 recherche guilde active!") -- Recrutement pour guilde chat:sendRecruitmentMessage("[NomGuilde] Recrute tous niveaux! MP pour infos") -- Message avec statistiques du personnage local niveau = character:level() local classe = character:getBreedName() chat:sendRecruitmentMessage(classe .. " " .. niveau .. " cherche guilde PvM active! MP") -- Anti-spam recrutement (10 minutes entre messages) local function sendRecruitMessage(msg) local lastRecruit = global:remember("lastRecruitMsg") or 0 local now = global:elapsedTime() if now - lastRecruit > 600000 then -- 10 minutes chat:sendRecruitmentMessage(msg) global:editInMemory("lastRecruitMsg", now) return true end return false end Copier chat:sendPrivateMessage(content, receiver) Copier -- Message prive simple chat:sendPrivateMessage("Salut, ca va?", "NomDuJoueur") -- Notification au chef d'equipe if global:isBoss() == false then local leaderName = "ChefEquipe" chat:sendPrivateMessage("Je suis pret pour le combat!", leaderName) end -- Systeme de reponse automatique aux MP -- D'abord, enregistrer le message dans messagesRegistering() function messagesRegistering() global:registerMessage("ChatServerMessage") end -- Reponse automatique (a implementer dans la logique) function autoReplyToPrivate(senderName) chat:sendPrivateMessage("Je suis un bot, je ne peux pas repondre automatiquement.", senderName) end -- Notification multi-destinataires local destinataires = {"Joueur1", "Joueur2", "Joueur3"} for _, nom in ipairs(destinataires) do chat:sendPrivateMessage("Message automatique!", nom) global:delay(1000) -- Eviter le spam end --- # fightBasic | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightbasic#addspell) addSpell **🎮Méthode** Copier fightBasic:addSpell(spellId, target, turns, relaunch, cac, targetLife) Ajoute un sort a la liste des sorts a utiliser. **Paramètres:** Nom Type Description `spellId` `number` ID du sort `target` `string` Type de cible (enemy, ally, self, cell) `turns` `number` Tous les X tours (0 = toujours) `relaunch` `number` Nombre de relances max par tour `cac` `boolean` Utiliser au corps a corps `targetLife` `number` Vie cible minimum en % **Exemple:** Exemples Copier -- Sort offensif sur ennemi, toujours, max 3 fois par tour fightBasic:addSpell(12345, "enemy", 0, 3, false, 0) -- Sort de buff sur soi, tour 1 uniquement fightBasic:addSpell(12346, "self", 1, 1, false, 0) -- Sort de soin sur allie si vie < 50% fightBasic:addSpell(12347, "ally", 0, 2, false, 50) circle-info Cibles: "enemy" (ennemi), "ally" (allie), "self" (soi-meme), "cell" (cellule) * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightbasic#clearspells) clearSpells **🎮Méthode** Vide la liste des sorts configures. **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightbasic#playturn) playTurn **🎮Méthode** Joue le tour avec une tactique donnée. **Paramètres:** Nom Type Description `tactic` `string` Tactique de combat **Exemple:** circle-info Tactiques: "aggressive", "defensive", "immobile", "fugitive" * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightbasic#setapproachdistance) setApproachDistance **🎮Méthode** Definit la distance d'approche souhaitee. **Paramètres:** Nom Type Description `distance` `number` Distance en cellules **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightbasic#setfightspeed) setFightSpeed **🎮Méthode** Definit la vitesse de combat. **Paramètres:** Nom Type Description `speed` `number` Multiplicateur de vitesse **Exemple:** [PrécédentfightSlavechevron-left](https://docs.snowbot.eu/methodes/combat/fightslave) [SuivantfightChallengechevron-right](https://docs.snowbot.eu/methodes/combat/fightchallenge) Mis à jour il y a 2 mois * [addSpell](https://docs.snowbot.eu/methodes/combat/fightbasic#addspell) * [clearSpells](https://docs.snowbot.eu/methodes/combat/fightbasic#clearspells) * [playTurn](https://docs.snowbot.eu/methodes/combat/fightbasic#playturn) * [setApproachDistance](https://docs.snowbot.eu/methodes/combat/fightbasic#setapproachdistance) * [setFightSpeed](https://docs.snowbot.eu/methodes/combat/fightbasic#setfightspeed) Copier fightBasic:clearSpells() Exemple Copier fightBasic:clearSpells() -- Reconfigurer les sorts fightBasic:addSpell(12345, "enemy", 0, 3, false, 0) Copier fightBasic:playTurn(tactic) Exemples de tactiques Copier -- Tactiques disponibles: fightBasic:playTurn("aggressive") -- Foncer sur l'ennemi fightBasic:playTurn("defensive") -- Rester a distance fightBasic:playTurn("immobile") -- Ne pas bouger fightBasic:playTurn("fugitive") -- Fuir les ennemis Copier fightBasic:setApproachDistance(distance) Exemple Copier -- Rester a 3 cellules de l'ennemi fightBasic:setApproachDistance(3) Copier fightBasic:setFightSpeed(speed) Exemple Copier fightBasic:setFightSpeed(2) -- Combat 2x plus rapide --- # fightChallenge | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#challengename) challengeName **🎮Méthode** Copier fightChallenge:challengeName(id) Retourne le nom d'un challenge. **Paramètres:** Nom Type Description `id` `number` ID du challenge **Retourne:** `string` - Nom du challenge **Exemple:** example.lua Copier local name = fightChallenge:challengeName(1) print("Challenge: " .. name) * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#getchallengeids) getChallengeIds **🎮Méthode** Copier fightChallenge:getChallengeIds() Retourne les IDs des challenges actifs. **Retourne:** `table` - Liste des IDs **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#getdropbonus) getDropBonus **🎮Méthode** Retourne le bonus de drop du challenge. **Paramètres:** Nom Type Description `challengeId` `number` ID du challenge **Retourne:** `number` - Bonus de drop en % **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#getfightchallenges) getFightChallenges **🎮Méthode** Retourne le message des challenges. **Retourne:** `ChallengeListMessage` - Message des challenges **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#getlastchallengeproposalmessage) getLastChallengeProposalMessage **🎮Méthode** Retourne le dernier message de proposition de challenge. **Retourne:** `ChallengeProposalMessage` - Message de proposition **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#getresultfromid) getResultFromId **🎮Méthode** Retourne le resultat d'un challenge. **Paramètres:** Nom Type Description `id` `number` ID du challenge **Retourne:** `number` - Resultat (0=en cours, 1=reussi, 2=echoue) **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#gettargetcells) getTargetCells **🎮Méthode** Retourne les cellules cibles du challenge. **Paramètres:** Nom Type Description `challengeId` `number` ID du challenge **Retourne:** `table` - Liste des cellules **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#gettargetids) getTargetIds **🎮Méthode** Retourne les IDs des cibles du challenge. **Paramètres:** Nom Type Description `challengeId` `number` ID du challenge **Retourne:** `table` - Liste des IDs de cibles **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightchallenge#getxpbonus) getXpBonus **🎮Méthode** Retourne le bonus d'XP du challenge. **Paramètres:** Nom Type Description `challengeId` `number` ID du challenge **Retourne:** `number` - Bonus XP en % **Exemple:** [PrécédentfightBasicchevron-left](https://docs.snowbot.eu/methodes/combat/fightbasic) [SuivantfightActionchevron-right](https://docs.snowbot.eu/methodes/combat/fightaction) Mis à jour il y a 2 mois * [challengeName](https://docs.snowbot.eu/methodes/combat/fightchallenge#challengename) * [getChallengeIds](https://docs.snowbot.eu/methodes/combat/fightchallenge#getchallengeids) * [getDropBonus](https://docs.snowbot.eu/methodes/combat/fightchallenge#getdropbonus) * [getFightChallenges](https://docs.snowbot.eu/methodes/combat/fightchallenge#getfightchallenges) * [getLastChallengeProposalMessage](https://docs.snowbot.eu/methodes/combat/fightchallenge#getlastchallengeproposalmessage) * [getResultFromId](https://docs.snowbot.eu/methodes/combat/fightchallenge#getresultfromid) * [getTargetCells](https://docs.snowbot.eu/methodes/combat/fightchallenge#gettargetcells) * [getTargetIds](https://docs.snowbot.eu/methodes/combat/fightchallenge#gettargetids) * [getXpBonus](https://docs.snowbot.eu/methodes/combat/fightchallenge#getxpbonus) example.lua Copier local challenges = fightChallenge:getChallengeIds() for _, id in ipairs(challenges) do print(fightChallenge:challengeName(id)) end Copier fightChallenge:getDropBonus(challengeId) example.lua Copier local bonus = fightChallenge:getDropBonus(1) print("Bonus drop: " .. bonus .. "%") Copier fightChallenge:getFightChallenges() example.lua Copier local msg = fightChallenge:getFightChallenges() Copier fightChallenge:getLastChallengeProposalMessage() example.lua Copier local proposal = fightChallenge:getLastChallengeProposalMessage() Copier fightChallenge:getResultFromId(id) example.lua Copier local result = fightChallenge:getResultFromId(1) if result == 1 then print("Challenge reussi!") end Copier fightChallenge:getTargetCells(challengeId) example.lua Copier local cells = fightChallenge:getTargetCells(1) Copier fightChallenge:getTargetIds(challengeId) example.lua Copier local targets = fightChallenge:getTargetIds(1) print("Cibles: " .. #targets) Copier fightChallenge:getXpBonus(challengeId) example.lua Copier local bonus = fightChallenge:getXpBonus(1) print("Bonus XP: " .. bonus .. "%") --- # job | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/personnage/job#level) level Retourne le niveau d'un metier specifique du personnage. Parcourt la liste des metiers appris (PacketAnalyser.idjobs) et retourne le niveau correspondant depuis leveljobs. Retourne -1 si le metier n'est pas appris. **Signature:** `job:level(Jobid)` **Paramètres:** Nom Type Description `Jobid` `number` ID du metier (voir liste des IDs) **Retourne:** `number` - Niveau du metier (1-200), ou -1 si non appris **Exemple:** example.lua Copier -- Verifier le niveau de bucheron (ID: 2) local levelBucheron = job:level(2) if levelBucheron > 0 then global:printMessage("Niveau Bucheron: " .. levelBucheron) else global:printWarning("Metier Bucheron non appris") end -- Verifier plusieurs metiers de recolte local metiers = { {id = 2, nom = "Bucheron"}, {id = 24, nom = "Mineur"}, {id = 26, nom = "Pecheur"}, {id = 28, nom = "Alchimiste"}, {id = 36, nom = "Paysan"}, } for _, metier in ipairs(metiers) do local niveau = job:level(metier.id) if niveau > 0 then global:printMessage(metier.nom .. ": Niveau " .. niveau) end end -- Adapter le GATHER selon le niveau local niveauPaysan = job:level(36) GATHER = {} if niveauPaysan >= 1 then table.insert(GATHER, d2data:getItemId("Ble")) end if niveauPaysan >= 20 then table.insert(GATHER, d2data:getItemId("Orge")) end if niveauPaysan >= 40 then table.insert(GATHER, d2data:getItemId("Avoine")) end circle-info IDs des metiers de recolte: * 2 = Bucheron * 24 = Mineur * 26 = Pecheur * 28 = Alchimiste * 36 = Paysan * 45 = Chasseur IDs des metiers d'artisanat: * 11 = Forgeur d'epees * 13 = Sculpteur d'arcs * 14 = Forgeur de marteaux * 15 = Cordonnier * 16 = Bijoutier * 17 = Forgeur de dagues * 18 = Sculpteur de batons * 19 = Sculpteur de baguettes * 20 = Forgeur de pelles * 25 = Tailleur * 27 = Forgeur de haches * 31 = Boulanger * 41 = Forgeur de boucliers * 43 = Cordomage * 44 = Joaillomage * 48 = Costumage * 60 = Faconneur * 63 = Bricoleur * 64 = Joailler * 65 = Forgeur * 66 = Sculpteur * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/job#name) name Retourne le nom traduit d'un metier a partir de son ID. Utilise D2Oparsing.getnamejob() qui accede aux fichiers D2O du jeu pour recuperer le nom dans la langue du client. **Signature:** `job:name(Jobid)` **Paramètres:** Nom Type Description `Jobid` `number` ID du metier **Retourne:** `string` - Nom du metier dans la langue du client **Exemple:** circle-info Le nom retourne depend de la langue du client Dofus (francais, anglais, etc.). [Précédentmountchevron-left](https://docs.snowbot.eu/methodes/personnage/mount) Mis à jour il y a 2 mois * [level](https://docs.snowbot.eu/methodes/personnage/job#level) * [name](https://docs.snowbot.eu/methodes/personnage/job#name) example.lua Copier -- Obtenir le nom d'un metier local jobName = job:name(2) global:printMessage("Metier: " .. jobName) -- Affiche: "Metier: Bucheron" -- Lister tous les metiers du personnage avec leurs noms local metiersIds = {2, 24, 26, 28, 36, 45} for _, jobId in ipairs(metiersIds) do local niveau = job:level(jobId) if niveau > 0 then local nom = job:name(jobId) global:printMessage(nom .. " - Niveau " .. niveau) end end -- Afficher le metier actif local jobId = 36 -- Paysan global:printMessage("Recolte avec le metier: " .. job:name(jobId)) --- # treasure | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#ishunting) isHunting **🎮Méthode** Copier treasure:isHunting() Vérifie si une chasse au trésor est en cours. Retourne: `boolean` - true si une chasse est active Exemple: Copier -- Verifier si on fait une chasse if treasure:isHunting() then global:printMessage("Chasse en cours!") end * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#isreadytodig) isReadyToDig **🎮Méthode** Copier treasure:isReadyToDig() Vérifie si on peut creuser (toutes les étapes sont validées ou étape de combat). Retourne: `boolean` - true si prêt à creuser Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#isfightstep) isFightStep **🎮Méthode** Vérifie si l'étape actuelle est un combat. Retourne: `boolean` - true si c'est une étape de combat Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#ishintstep) isHintStep **🎮Méthode** Vérifie si l'étape actuelle est une recherche d'indice (POI). Retourne: `boolean` - true si c'est une étape d'indice Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#isphorreurstep) isPhorreurStep **🎮Méthode** Vérifie si l'étape actuelle est une recherche de Phorreur. Retourne: `boolean` - true si c'est une étape Phorreur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#isphorreurinmap) isPhorreurInMap **🎮Méthode** Vérifie si le Phorreur ou l'indice se trouve sur la carte actuelle. Retourne: `boolean` - true si l'objectif est sur cette carte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#isgivingup) isGivingUp **🎮Méthode** Vérifie si la chasse est en cours d'abandon. Retourne: `boolean` - true si abandon en cours Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#huntflag) huntFlag **🎮Méthode** Valide l'étape actuelle de la chasse (indice trouvé). Retourne: `boolean` - true si validation réussie Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#huntdig) huntDig **🎮Méthode** Creuse pour trouver le trésor (dernière étape). Retourne: `boolean` - true si le tresor est trouve Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#huntdigtry) huntDigTry **🎮Méthode** Tente de creuser et vérifie le résultat. Retourne: `boolean` - true si reussi ou deja valide Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#huntclear) huntClear **🎮Méthode** Supprime le premier flag de la chasse. Retourne: `boolean` - true si suppression reussie Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#starthunt) startHunt **🎮Méthode** Démarre une nouvelle chasse au trésor du niveau spécifié. Paramètres: Nom Type Description level number Niveau de la chasse (0 = niveau max du personnage) Retourne: `number` - Code résultat (1 = succes, 5 = deja en cours, 0 = echec, negatif = temps d'attente) Exemple: > Note: Doit etre utilise pres d'un tableau de chasse au tresor. * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#quit) quit **🎮Méthode** Abandonne la chasse au trésor en cours (avec temps d'attente). Retourne: `void` Exemple: > Note: Peut necessiter un temps d'attente avant de pouvoir reprendre une nouvelle chasse. * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#quitnow) quitNow **🎮Méthode** Abandonne immediatement la chasse sans attendre. Retourne: `void` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#getstartmapid) getStartMapId **🎮Méthode** Retourne l'ID de la carte de depart de la chasse. Retourne: `number` - ID de la carte de depart Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#getstepcount) getStepCount **🎮Méthode** Retourne le nombre total d'étapes de la chasse. Retourne: `number` - Nombre d'étapes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#getnextflagdirection) getNextFlagDirection **🎮Méthode** Retourne la direction de la prochaine étape. Paramètres: Nom Type Description index number Index de l'etape (-1 pour la derniere) Retourne: `string` - Direction (top, bottom, left, right) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#getnextflagname) GetNextFlagName **🎮Méthode** Retourne le nom de l'indice à trouver. Paramètres: Nom Type Description index number Index de l'etape (-1 pour la derniere) Retourne: `string` - Nom de l'indice (ex: "Tas de feuilles", "Phorreur") Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#getnextflagid) getNextFlagId **🎮Méthode** Retourne l'ID de l'indice à trouver. Paramètres: Nom Type Description index number Index de l'etape (-1 pour la derniere) Retourne: `number` - ID du POI ou du PNJ Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/treasure#getpos) getPos **🎮Méthode** Retourne les coordonnées d'une carte au format \[x,y\]. Paramètres: Nom Type Description mapId number ID de la carte Retourne: `string` - Coordonnees au format "\[x,y\]" Exemple: * * * [PrécédentActivitéschevron-left](https://docs.snowbot.eu/methodes/activites) [Suivantquestchevron-right](https://docs.snowbot.eu/methodes/activites/quest) Mis à jour il y a 2 mois * [isHunting](https://docs.snowbot.eu/methodes/activites/treasure#ishunting) * [isReadyToDig](https://docs.snowbot.eu/methodes/activites/treasure#isreadytodig) * [isFightStep](https://docs.snowbot.eu/methodes/activites/treasure#isfightstep) * [isHintStep](https://docs.snowbot.eu/methodes/activites/treasure#ishintstep) * [isPhorreurStep](https://docs.snowbot.eu/methodes/activites/treasure#isphorreurstep) * [isPhorreurInMap](https://docs.snowbot.eu/methodes/activites/treasure#isphorreurinmap) * [isGivingUp](https://docs.snowbot.eu/methodes/activites/treasure#isgivingup) * [huntFlag](https://docs.snowbot.eu/methodes/activites/treasure#huntflag) * [huntDig](https://docs.snowbot.eu/methodes/activites/treasure#huntdig) * [huntDigTry](https://docs.snowbot.eu/methodes/activites/treasure#huntdigtry) * [huntClear](https://docs.snowbot.eu/methodes/activites/treasure#huntclear) * [startHunt](https://docs.snowbot.eu/methodes/activites/treasure#starthunt) * [quit](https://docs.snowbot.eu/methodes/activites/treasure#quit) * [quitNow](https://docs.snowbot.eu/methodes/activites/treasure#quitnow) * [getStartMapId](https://docs.snowbot.eu/methodes/activites/treasure#getstartmapid) * [getStepCount](https://docs.snowbot.eu/methodes/activites/treasure#getstepcount) * [getNextFlagDirection](https://docs.snowbot.eu/methodes/activites/treasure#getnextflagdirection) * [GetNextFlagName](https://docs.snowbot.eu/methodes/activites/treasure#getnextflagname) * [getNextFlagId](https://docs.snowbot.eu/methodes/activites/treasure#getnextflagid) * [getPos](https://docs.snowbot.eu/methodes/activites/treasure#getpos) Copier -- Verifier si on peut creuser if treasure:isReadyToDig() then treasure:huntDig() end Copier treasure:isFightStep() Copier if treasure:isFightStep() then global:printMessage("Preparez-vous au combat!") end Copier treasure:isHintStep() Copier if treasure:isHintStep() then local hint = treasure:GetNextFlagName() global:printMessage("Indice a trouver: " .. hint) end Copier treasure:isPhorreurStep() Copier if treasure:isPhorreurStep() then global:printMessage("Recherche d'un Phorreur...") end Copier treasure:isPhorreurInMap() Copier if treasure:isPhorreurInMap() then global:printSuccess("Objectif trouve sur cette carte!") treasure:huntFlag() end Copier treasure:isGivingUp() Copier if treasure:isGivingUp() then global:printMessage("Abandon de la chasse...") end Copier treasure:huntFlag() Copier -- Valider un indice trouve if treasure:isPhorreurInMap() then if treasure:huntFlag() then global:printSuccess("Indice valide!") end end Copier treasure:huntDig() Copier -- Creuser quand pret if treasure:isReadyToDig() then if treasure:huntDig() then global:printSuccess("Tresor trouve!") else global:printError("Echec du creusement...") end end Copier treasure:huntDigTry() Copier if treasure:huntDigTry() then global:printSuccess("Creusement reussi!") end Copier treasure:huntClear() Copier -- Reinitialiser la chasse treasure:huntClear() Copier treasure:startHunt(level) Copier -- Demarrer une chasse niveau 200 local result = treasure:startHunt(200) if result == 1 then global:printSuccess("Chasse demarree!") elseif result == 5 then global:printMessage("Chasse deja en cours") elseif result < 0 then global:printMessage("Attendre " .. math.abs(result) .. " minutes") else global:printError("Impossible de demarrer la chasse") end -- Chasse au niveau du personnage treasure:startHunt(0) Copier treasure:quit() Copier -- Abandonner la chasse si bloque if someCondition then treasure:quit() end Copier treasure:quitNow() Copier -- Abandon immediat treasure:quitNow() Copier treasure:getStartMapId() Copier local startMap = treasure:getStartMapId() global:printMessage("Carte de depart: " .. startMap) Copier treasure:getStepCount() Copier local steps = treasure:getStepCount() global:printMessage("Nombre d'etapes: " .. steps) Copier treasure:getNextFlagDirection(index) Copier local direction = treasure:getNextFlagDirection(-1) global:printMessage("Direction: " .. direction) -- Utiliser dans move() if direction == "top" then return {{ map = currentMap, path = "top" }} end Copier treasure:GetNextFlagName(index Copier local hintName = treasure:GetNextFlagName(-1) global:printMessage("Rechercher: " .. hintName) Copier treasure:getNextFlagId(index) Copier local hintId = treasure:getNextFlagId(-1) global:printMessage("ID de l'indice: " .. hintId) Copier treasure:getPos(mapId) Copier local startMap = treasure:getStartMapId() local coords = treasure:getPos(startMap) global:printMessage("Position de depart: " .. coords) --- # config | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#getamountofspecificmonsters) getAmountOfSpecificMonsters 🎮Méthode Copier config:getAmountOfSpecificMonsters() Retourne les quantites requises de monstres specifiques. **Retourne:** `object` - Configuration des quantites **Exemple:** Copier local amounts = config:getAmountOfSpecificMonsters() * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#getforbiddenmonsters) getForbiddenMonsters 🎮Méthode Copier config:getForbiddenMonsters() Retourne la liste des monstres interdits. **Retourne:** `object` - Liste des monstres a eviter **Exemple:** Copier local forbidden = config:getForbiddenMonsters() for _, monsterId in ipairs(forbidden) do print("Monstre interdit: " .. monsterId) end * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#getgatherlist) getGatherList 🎮Méthode Retourne la liste des ressources a recolter. **Retourne:** `object` - Liste des ressources **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#getmandatorymonsters) getMandatoryMonsters 🎮Méthode Retourne la liste des monstres obligatoires. **Retourne:** `object` - Liste des monstres requis **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#getmaxmonsters) getMaxMonsters 🎮Méthode Retourne le nombre maximum de monstres par groupe. **Retourne:** `object` - Nombre maximum **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#getminmonsters) getMinMonsters 🎮Méthode Retourne le nombre minimum de monstres par groupe. **Retourne:** `object` - Nombre minimum **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#setamountofspecificmonsters) setAmountOfSpecificMonsters 🎮Méthode Definit les quantites de monstres specifiques. **Paramètres:** Nom Type Description `amountOfSpecificMonsters` `object` Configuration des quantites **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#setforbiddenmonsters) setForbiddenMonsters 🎮Méthode Definit la liste des monstres interdits. **Paramètres:** Nom Type Description `forbiddenMonstersList` `table` Liste des IDs de monstres **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#setgatherlist) setGatherList 🎮Méthode Definit la liste des ressources a recolter. **Paramètres:** Nom Type Description `gatherList` `table` Liste des IDs de ressources **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#setmandatorymonsters) setMandatoryMonsters 🎮Méthode Definit la liste des monstres obligatoires. **Paramètres:** Nom Type Description `mandatoryMonstersList` `table` Liste des IDs de monstres **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#setmaxmonsters) setMaxMonsters 🎮Méthode Definit le nombre maximum de monstres par groupe. **Paramètres:** Nom Type Description `maxMonsters` `number` Nombre maximum **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/config#setminmonsters) setMinMonsters 🎮Méthode Definit le nombre minimum de monstres par groupe. **Paramètres:** Nom Type Description `minMonsters` `number` Nombre minimum **Exemple:** * * * [Précédentaccountchevron-left](https://docs.snowbot.eu/methodes/systeme/account) [Suivantd2datachevron-right](https://docs.snowbot.eu/methodes/systeme/d2data) Mis à jour il y a 2 mois * [getAmountOfSpecificMonsters](https://docs.snowbot.eu/methodes/systeme/config#getamountofspecificmonsters) * [getForbiddenMonsters](https://docs.snowbot.eu/methodes/systeme/config#getforbiddenmonsters) * [getGatherList](https://docs.snowbot.eu/methodes/systeme/config#getgatherlist) * [getMandatoryMonsters](https://docs.snowbot.eu/methodes/systeme/config#getmandatorymonsters) * [getMaxMonsters](https://docs.snowbot.eu/methodes/systeme/config#getmaxmonsters) * [getMinMonsters](https://docs.snowbot.eu/methodes/systeme/config#getminmonsters) * [setAmountOfSpecificMonsters](https://docs.snowbot.eu/methodes/systeme/config#setamountofspecificmonsters) * [setForbiddenMonsters](https://docs.snowbot.eu/methodes/systeme/config#setforbiddenmonsters) * [setGatherList](https://docs.snowbot.eu/methodes/systeme/config#setgatherlist) * [setMandatoryMonsters](https://docs.snowbot.eu/methodes/systeme/config#setmandatorymonsters) * [setMaxMonsters](https://docs.snowbot.eu/methodes/systeme/config#setmaxmonsters) * [setMinMonsters](https://docs.snowbot.eu/methodes/systeme/config#setminmonsters) Copier config:getGatherList() Copier local resources = config:getGatherList() Copier config:getMandatoryMonsters() Copier local mandatory = config:getMandatoryMonsters() Copier config:getMaxMonsters() Copier local max = config:getMaxMonsters() print("Max monstres: " .. max) Copier config:getMinMonsters() Copier local min = config:getMinMonsters() print("Min monstres: " .. min) Copier config:setAmountOfSpecificMonsters(amountOfSpecificMonsters) Copier config:setAmountOfSpecificMonsters({[123] = 2, [456] = 1}) Copier config:setForbiddenMonsters(forbiddenMonstersList) Copier -- Interdire certains monstres config:setForbiddenMonsters({123, 456, 789}) Copier config:setGatherList(gatherList) Copier -- Recolter uniquement le ble et l'orge config:setGatherList({38, 43}) Copier config:setMandatoryMonsters(mandatoryMonstersList) Copier -- N'attaquer que les groupes contenant ces monstres config:setMandatoryMonsters({123, 456}) Copier config:setMaxMonsters(maxMonsters) Copier config:setMaxMonsters(8) Copier config:setMinMonsters(minMonsters) Copier config:setMinMonsters(1) --- # exchange | Snowbot Docs Méthodes ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#putitem) putItem Depose un objet specifique dans le stockage ou l'echange en cours. Recherche l'objet dans l'inventaire par son GID et envoie une demande de transfert au serveur. Attend la confirmation du serveur avant de continuer. Affiche un message d'erreur si l'objet n'est pas trouve dans l'inventaire. Signature: `exchange:putItem(objectGID, quantity)` Paramètres: Nom Type Description `objectGID` `number` L'ID general de l'objet (GID) - identifiant du type d'objet `quantity` `number` Quantite a deposer Exemple: Copier -- Deposer 50 bles (GID 289) dans la banque exchange:putItem(289, 50) -- Deposer plusieurs ressources local ressources = { {gid = 289, qty = 100}, -- Ble {gid = 400, qty = 50}, -- Orge {gid = 533, qty = 25}, -- Chanvre } for _, res in ipairs(ressources) do exchange:putItem(res.gid, res.qty) end > **Note:** Le script est suspendu jusqu'a confirmation du serveur. Si l'objet n'existe pas dans l'inventaire, un message d'erreur est affiche dans le chat du bot. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#getitem) getItem Recupere un objet depuis le stockage (banque) ou l'echange. Recherche l'objet dans le stockage par son GID et envoie une demande de recuperation au serveur. Attend le delai specifie (defaut 1000ms) avant de continuer. Signature: `exchange:getItem(objectGID, quantity, delay)` Paramètres: Nom Type Description `objectGID` `number` L'ID general de l'objet (GID) `quantity` `number` Quantite a recuperer `delay` `number` Delai en millisecondes apres l'operation (defaut: 1000ms) Retourne: `void` Exemple: > **Note:** ATTENTION: Cette fonction n'attend pas de confirmation du serveur, seulement un delai fixe. Pour des operations critiques, ajoutez un delai supplementaire avec global:delay(). * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#getallitems) getAllItems Recupere TOUS les objets presents dans le stockage (banque) vers l'inventaire du personnage. Envoie une demande de transfert complet au serveur et attend la confirmation avant de continuer. Affiche le message "le bot prend les objets presents en banque" dans le chat. Signature: `exchange:getAllItems()` Retourne: `void` Exemple: > **Note:** Attention: assurez-vous d'avoir assez de place dans l'inventaire. Si l'inventaire est plein, seuls les objets qui peuvent etre transferes le seront. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#putallitems) putAllItems Depose TOUS les objets de l'inventaire dans le stockage (banque). Envoie une demande de transfert complet au serveur et attend la confirmation avant de continuer. Affiche le message "le bot vide tous les objets presents en inventaire" dans le chat. Signature: `exchange:putAllItems()` Retourne: `void` Exemple: > **Note:** Cette fonction depose TOUS les objets, sans filtrer par position. Pour exclure certains objets, utilisez putAllItemsExcept(). * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#getallitemsexcept) getAllItemsExcept Recupere tous les objets du stockage SAUF ceux dont le GID est dans la liste d'exception. Parcourt les objets en banque et transfere uniquement ceux qui ne sont pas dans la liste d'exclusion. Attend la confirmation du serveur avant de continuer. Signature: `exchange:getAllItemsExcept(except)` Paramètres: Nom Type Description `except` `table` Liste des GID (table Lua) des objets a ne PAS recuperer Retourne: `void` Exemple: > **Note:** Affiche le message "Le bot prend les objets presents dans l'espace de stockage (getAllItemsExcept)." dans le chat. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#putallitemsexcept) putAllItemsExcept Depose tous les objets de l'inventaire SAUF ceux dont le GID est dans la liste d'exception. Parcourt l'inventaire et transfere uniquement les objets non equipes qui ne sont pas dans la liste d'exclusion. Attend la confirmation du serveur avant de continuer. Signature: `exchange:putAllItemsExcept(except)` Paramètres: Nom Type Description `except` `table` Liste des GID (table Lua) des objets a garder dans l'inventaire Retourne: `void` Exemple: > **Note:** Seuls les objets en position 63 (inventaire non equipe) sont consideres. Les objets equipes (positions 0-15) sont automatiquement exclus. Affiche le message "Le bot vide tous les objets presents en inventaire (putAllItemsExcept)." * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#putkamas) putKamas Depose des kamas dans le stockage (banque) ou l'echange. Si kamas = 0, depose TOUS les kamas du personnage. Attend la confirmation du serveur avant de continuer. Signature: `exchange:putKamas(kamas)` Paramètres: Nom Type Description `kamas` `number` Montant de kamas a deposer (0 = tout deposer) Retourne: `void` Exemple: > **Note:** Passer 0 comme parametre depose automatiquement tous les kamas disponibles sur le personnage. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#getkamas) getKamas Recupere des kamas depuis le stockage (banque). Si kamas = 0, recupere TOUS les kamas de la banque. Attend la confirmation du serveur avant de continuer. Signature: `exchange:getKamas(kamas)` Paramètres: Nom Type Description `kamas` `number` Montant de kamas a recuperer (0 = tout recuperer) Retourne: `void` Exemple: > **Note:** Passer 0 comme parametre recupere automatiquement tous les kamas disponibles en banque. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#launchexchangewithplayer) LaunchExchangeWithPlayer Lance une demande d'echange avec un joueur specifique via son ID de contexte. NECESSITE UN ABONNEMENT PREMIUM. Envoie la demande d'echange au joueur et attend jusqu'a 50 secondes sa reponse (acceptation ou refus), puis attend l'ouverture de l'interface d'echange. Signature: `exchange:LaunchExchangeWithPlayer(PlayerId)` Paramètres: Nom Type Description `PlayerId` `number` L'ID de contexte du joueur (contextualId, type Double) Retourne: `boolean` - true si l'echange a ete accepte et ouvert, false si refuse ou timeout Exemple: > **Note:** Necessite un abonnement premium. Affiche "Vous n'avez pas d'abonnement pour les echanges avances." si non autorise. Timeout de 50 secondes pour chaque etape. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#launchexchangewithplayerbyname) launchExchangeWithPlayerByName Lance une demande d'echange avec un joueur via son nom. Recherche le joueur sur la map actuelle par son nom exact, puis lance l'echange avec lui. Signature: `exchange:launchExchangeWithPlayerByName(name)` Paramètres: Nom Type Description `name` `string` Le nom exact du joueur (sensible a la casse) Retourne: `boolean` - true si le joueur a ete trouve et l'echange accepte, false sinon Exemple: > **Note:** Le nom doit etre exactement identique (sensible a la casse). Le joueur doit etre present sur la meme map. Necessite un abonnement premium. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#storageitems) storageItems Retourne la liste des GID de tous les objets presents dans le stockage (banque). Retourne une liste d'entiers representant les identifiants des types d'objets. Signature: `exchange:storageItems()` Retourne: `table` - Liste (table Lua) des GID des objets en stockage Exemple: > **Note:** Retourne uniquement les GID, pas les quantites. Utilisez storageItemQuantity() pour obtenir la quantite d'un objet specifique. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#storageitemquantity) storageItemQuantity Retourne la quantite d'un objet specifique dans le stockage (banque). Recherche l'objet par son GID et retourne la quantite stockee. Retourne 0 si l'objet n'est pas trouve. Signature: `exchange:storageItemQuantity(GID)` Paramètres: Nom Type Description `GID` `number` L'ID general de l'objet recherche Retourne: `number` - Quantite de l'objet en stockage (0 si absent) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#storagekamas) storageKamas Retourne le nombre de kamas presents dans le stockage (banque). Signature: `exchange:storageKamas()` Retourne: `number` - Montant de kamas en banque Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#storageitemcount) storageItemCount Retourne le nombre de types d'objets differents dans le stockage (banque). Compte le nombre de stacks differents (pas la quantite totale d'objets). Signature: `exchange:storageItemCount()` Retourne: `number` - Nombre de types d'objets differents en stockage Exemple: > **Note:** Compte le nombre de stacks/types differents, pas la quantite totale. Par exemple, 100 bles et 50 orges comptent pour 2 types. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#ready) Ready Valide l'echange en cours (equivalent a cliquer sur le bouton "Pret"). Attend 3 secondes avant d'envoyer la validation, puis attend jusqu'a 50 secondes que l'echange soit finalise. Signature: `exchange:Ready()` Retourne: `void` Exemple: > **Note:** L'echange ne sera effectif que lorsque les DEUX parties auront valide (clique sur Pret). Le script attend que l'echange soit finalise avant de continuer. Delai initial de 3 secondes pour eviter les validations trop rapides. * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/exchange#leave) leave Quitte l'echange ou le stockage en cours. Ferme proprement le dialogue actuel (banque, echange joueur, coffre, etc.). Signature: `exchange:leave()` Retourne: `void` Exemple: > **Note:** Peut etre utilise pour fermer n'importe quel type de dialogue (banque, echange joueur, coffre de maison, etc.). * * * [PrécédentÉconomiechevron-left](https://docs.snowbot.eu/methodes/economie) [Suivantsalechevron-right](https://docs.snowbot.eu/methodes/economie/sale) Mis à jour il y a 2 mois * [putItem](https://docs.snowbot.eu/methodes/economie/exchange#putitem) * [getItem](https://docs.snowbot.eu/methodes/economie/exchange#getitem) * [getAllItems](https://docs.snowbot.eu/methodes/economie/exchange#getallitems) * [putAllItems](https://docs.snowbot.eu/methodes/economie/exchange#putallitems) * [getAllItemsExcept](https://docs.snowbot.eu/methodes/economie/exchange#getallitemsexcept) * [putAllItemsExcept](https://docs.snowbot.eu/methodes/economie/exchange#putallitemsexcept) * [putKamas](https://docs.snowbot.eu/methodes/economie/exchange#putkamas) * [getKamas](https://docs.snowbot.eu/methodes/economie/exchange#getkamas) * [LaunchExchangeWithPlayer](https://docs.snowbot.eu/methodes/economie/exchange#launchexchangewithplayer) * [launchExchangeWithPlayerByName](https://docs.snowbot.eu/methodes/economie/exchange#launchexchangewithplayerbyname) * [storageItems](https://docs.snowbot.eu/methodes/economie/exchange#storageitems) * [storageItemQuantity](https://docs.snowbot.eu/methodes/economie/exchange#storageitemquantity) * [storageKamas](https://docs.snowbot.eu/methodes/economie/exchange#storagekamas) * [storageItemCount](https://docs.snowbot.eu/methodes/economie/exchange#storageitemcount) * [Ready](https://docs.snowbot.eu/methodes/economie/exchange#ready) * [leave](https://docs.snowbot.eu/methodes/economie/exchange#leave) Copier -- Recuperer 10 bles de la banque exchange:getItem(289, 10) -- Recuperer avec delai personnalise (500ms) exchange:getItem(289, 10, 500) -- Recuperer toutes les ressources necessaires pour un craft local ingredientsCraft = { {gid = 289, qty = 5}, -- Ble {gid = 350, qty = 3}, -- Eau } for _, item in ipairs(ingredientsCraft) do if exchange:storageItemQuantity(item.gid) >= item.qty then exchange:getItem(item.gid, item.qty, 300) end end Copier -- Vider completement la banque exchange:getAllItems() global:printSuccess("Tous les objets ont ete recuperes!") -- Verifier l'inventaire apres recuperation local items = inventory:inventoryContent() global:printMessage("Objets en inventaire: " .. #items) Copier -- Vider completement l'inventaire dans la banque exchange:putAllItems() global:printSuccess("Inventaire vide dans la banque!") -- Workflow typique de depot en banque if map:currentMapId() == 88081177 then -- Map de la banque npc:npc(-20001) -- Parler au banquier npc:reply(-1) -- Ouvrir le coffre exchange:putAllItems() exchange:leave() end Copier -- Recuperer tout sauf les pods (GID 1234) et les parchemins (GID 5678) exchange:getAllItemsExcept({1234, 5678}) -- Garder certaines ressources en banque pour plus tard local aGarder = { 289, -- Ble (pour farm plus tard) 400, -- Orge } exchange:getAllItemsExcept(aGarder) -- Recuperer tout sauf les consommables rares local consommablesRares = {692, 693, 694} -- Potions precieuses exchange:getAllItemsExcept(consommablesRares) Copier -- Deposer tout sauf les potions de vie (GID 289) exchange:putAllItemsExcept({289}) -- Garder les consommables essentiels pour le combat local aGarder = { 289, -- Potion de vie 548, -- Pain 6965, -- Rappel de position } exchange:putAllItemsExcept(aGarder) -- Workflow pour deposer les ressources mais garder l'equipement de rechange local equipementRechange = {12345, 12346, 12347} exchange:putAllItemsExcept(equipementRechange) Copier -- Deposer 100000 kamas exchange:putKamas(100000) -- Deposer TOUS les kamas exchange:putKamas(0) -- Deposer tout en gardant 10000 kamas sur soi local kamasActuels = character:kamas() if kamasActuels > 10000 then exchange:putKamas(kamasActuels - 10000) end Copier -- Recuperer 50000 kamas de la banque exchange:getKamas(50000) -- Recuperer TOUS les kamas de la banque exchange:getKamas(0) -- Recuperer juste assez pour un achat local prixAchat = 25000 local kamasActuels = character:kamas() if kamasActuels < prixAchat then local manque = prixAchat - kamasActuels exchange:getKamas(manque) end Copier -- Lancer un echange avec un joueur specifique local success = exchange:LaunchExchangeWithPlayer(123456789) if success then global:printSuccess("Echange ouvert!") -- Mettre des objets dans l'echange exchange:putItem(289, 10) exchange:Ready() else global:printError("L'echange a ete refuse ou a expire") end -- Trouver un joueur sur la map et echanger avec lui local players = map:players() if #players > 0 then local success = exchange:LaunchExchangeWithPlayer(players[1].contextualId) end Copier -- Echanger avec un joueur par son nom local success = exchange:launchExchangeWithPlayerByName("MonAmi") if success then global:printSuccess("Echange avec MonAmi ouvert!") exchange:putItem(289, 100) -- Donner 100 bles exchange:Ready() else global:printError("Joueur non trouve ou echange refuse") end -- Script de transfert automatique vers un mule local muleNom = "MonMule" if exchange:launchExchangeWithPlayerByName(muleNom) then exchange:putAllItems() exchange:putKamas(0) -- Tout donner exchange:Ready() global:delay(5000) -- Attendre validation exchange:leave() end Copier -- Lister tous les types d'objets en banque local items = exchange:storageItems() for _, gid in ipairs(items) do local nom = d2data:getItemName(gid) global:printMessage("En banque: " .. nom .. " (GID: " .. gid .. ")") end -- Verifier si un objet est en banque local gidRecherche = 289 -- Ble local items = exchange:storageItems() local trouve = false for _, gid in ipairs(items) do if gid == gidRecherche then trouve = true break end end if trouve then global:printSuccess("Ble trouve en banque!") end Copier -- Verifier la quantite de ble en banque local qtyBle = exchange:storageItemQuantity(289) global:printMessage("Ble en banque: " .. qtyBle) -- Recuperer seulement si assez en stock local besoin = 100 if exchange:storageItemQuantity(289) >= besoin then exchange:getItem(289, besoin) else global:printWarning("Pas assez de ble en banque!") end -- Inventaire de la banque avec quantites local items = exchange:storageItems() for _, gid in ipairs(items) do local nom = d2data:getItemName(gid) local qty = exchange:storageItemQuantity(gid) global:printMessage(nom .. ": " .. qty) end Copier -- Afficher les kamas en banque local kamas = exchange:storageKamas() global:printMessage("Kamas en banque: " .. kamas) -- Verifier si assez de kamas pour un achat local prixAchat = 50000 if exchange:storageKamas() >= prixAchat then exchange:getKamas(prixAchat) global:printSuccess("Kamas recuperes pour l'achat!") else global:printWarning("Pas assez de kamas en banque") end -- Afficher le total des kamas (personnage + banque) local kamasTotal = character:kamas() + exchange:storageKamas() global:printMessage("Fortune totale: " .. kamasTotal .. " kamas") Copier -- Verifier l'espace utilise en banque local nbTypes = exchange:storageItemCount() global:printMessage("Types d'objets en banque: " .. nbTypes) -- Verifier si la banque est presque pleine (max ~300 slots) if exchange:storageItemCount() > 280 then global:printWarning("Banque presque pleine!") end Copier -- Workflow d'echange complet if exchange:launchExchangeWithPlayerByName("MonAmi") then -- Mettre des objets dans l'echange exchange:putItem(289, 100) exchange:putKamas(10000) -- Valider l'echange exchange:Ready() global:printSuccess("Echange termine!") end -- Echange avec validation conditionnelle exchange:putItem(289, 50) -- Attendre que l'autre joueur mette quelque chose... global:delay(5000) exchange:Ready() Copier -- Workflow complet avec la banque npc:npc(-20001) -- Parler au banquier npc:reply(-1) -- Ouvrir le coffre -- Deposer les ressources exchange:putAllItems() exchange:putKamas(0) -- Fermer la banque exchange:leave() global:printSuccess("Depot en banque termine!") -- Annuler un echange en cours if exchange:launchExchangeWithPlayerByName("Joueur") then -- On change d'avis... exchange:leave() global:printMessage("Echange annule") end --- # fightSlave | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#cancastspelloncell) canCastSpellOnCell **🎮Méthode** Copier fightSlave:canCastSpellOnCell(launchedCellId, spellId, targetCellId, needToCheckInvoc, needToCheckLOS) Verifie si l'invocation peut lancer un sort. Paramètres: Nom Type Description `launchedCellId` `number` Cellule de lancement `spellId` `number` ID du sort `targetCellId` `number` Cellule cible `needToCheckInvoc` `boolean` Verifier invocations `needToCheckLOS` `boolean` Verifier ligne de vue Retourne: `number` - Code resultat (0 = possible) Exemple: Copier local result = fightSlave:canCastSpellOnCell(myCell, 12345, targetCell, false, true) * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#cancastspelloncellaftermove) canCastSpellOnCellAfterMove **🎮Méthode** Copier fightSlave:canCastSpellOnCellAfterMove(launchedCellId, spellId, targetCellId, needToCheckInvoc, needToCheckLOS) Verifie si le sort est lancable apres deplacement. Paramètres: Nom Type Description `launchedCellId` `number` Cellule de lancement `spellId` `number` ID du sort `targetCellId` `number` Cellule cible `needToCheckInvoc` `boolean` Verifier invocations `needToCheckLOS` `boolean` Verifier ligne de vue Retourne: `number` - Code resultat Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#castspelloncell) castSpellOnCell **🎮Méthode** Lance un sort avec l'invocation. Paramètres: Nom Type Description `spellId` `number` ID du sort `cellId` `number` Cellule cible Retourne: `boolean` - true si lance Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#cellid) cellId **🎮Méthode** Retourne la cellule de l'invocation. Retourne: `number` - ID de la cellule Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#creatureid) creatureId **🎮Méthode** Retourne l'ID de la creature invoquee. Retourne: `number` - ID de la creature Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#entity) entity **🎮Méthode** Retourne l'entite de l'invocation. Retourne: `PlugCombat` - Entite de combat Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#getnearestally) getNearestAlly **🎮Méthode** Retourne l'allie le plus proche de l'invocation. Retourne: `number` - ID de l'allie Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#getnearestenemy) getNearestEnemy **🎮Méthode** Retourne l'ennemi le plus proche de l'invocation. Retourne: `number` - ID de l'ennemi Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#getreachablecells) getReachableCells **🎮Méthode** Retourne les cellules atteignables par l'invocation. Retourne: `table` - Liste des cellules Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#getrealreachablecells) getRealReachableCells **🎮Méthode** Retourne les cellules reellement atteignables. Retourne: `table` - Liste des cellules Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#index) index **🎮Méthode** Retourne l'index de l'invocation. Retourne: `number` - Index Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#invalidatecache) InvalidateCache **🎮Méthode** Invalide le cache de l'invocation. Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#iscellreachable) isCellReachable **🎮Méthode** Verifie si une cellule est atteignable. Paramètres: Nom Type Description `targetCell` `number` Cellule cible Retourne: `boolean` - true si atteignable Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#movetowardcell) moveTowardCell **🎮Méthode** Deplace l'invocation vers une cellule. Paramètres: Nom Type Description `cellid` `number` Cellule cible Retourne: `boolean` - true si deplacement effectue Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#name) name **🎮Méthode** Retourne le nom de l'invocation. Retourne: `string` - Nom Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightslave#showspells) showSpells **🎮Méthode** Affiche les sorts de l'invocation. Retourne: `object` Exemple: * * * [PrécédentfightDebugchevron-left](https://docs.snowbot.eu/methodes/combat/fightdebug) [SuivantfightBasicchevron-right](https://docs.snowbot.eu/methodes/combat/fightbasic) Mis à jour il y a 2 mois * [canCastSpellOnCell](https://docs.snowbot.eu/methodes/combat/fightslave#cancastspelloncell) * [canCastSpellOnCellAfterMove](https://docs.snowbot.eu/methodes/combat/fightslave#cancastspelloncellaftermove) * [castSpellOnCell](https://docs.snowbot.eu/methodes/combat/fightslave#castspelloncell) * [cellId](https://docs.snowbot.eu/methodes/combat/fightslave#cellid) * [creatureId](https://docs.snowbot.eu/methodes/combat/fightslave#creatureid) * [entity](https://docs.snowbot.eu/methodes/combat/fightslave#entity) * [getNearestAlly](https://docs.snowbot.eu/methodes/combat/fightslave#getnearestally) * [getNearestEnemy](https://docs.snowbot.eu/methodes/combat/fightslave#getnearestenemy) * [getReachableCells](https://docs.snowbot.eu/methodes/combat/fightslave#getreachablecells) * [getRealReachableCells](https://docs.snowbot.eu/methodes/combat/fightslave#getrealreachablecells) * [index](https://docs.snowbot.eu/methodes/combat/fightslave#index) * [InvalidateCache](https://docs.snowbot.eu/methodes/combat/fightslave#invalidatecache) * [isCellReachable](https://docs.snowbot.eu/methodes/combat/fightslave#iscellreachable) * [moveTowardCell](https://docs.snowbot.eu/methodes/combat/fightslave#movetowardcell) * [name](https://docs.snowbot.eu/methodes/combat/fightslave#name) * [showSpells](https://docs.snowbot.eu/methodes/combat/fightslave#showspells) Copier local result = fightSlave:canCastSpellOnCellAfterMove(newCell, 12345, targetCell, false, true) Copier fightSlave:castSpellOnCell(spellId, cellId) Copier fightSlave:castSpellOnCell(12345, targetCell) Copier fightSlave:cellId() Copier local cell = fightSlave:cellId() Copier fightSlave:creatureId() Copier local id = fightSlave:creatureId() Copier fightSlave:entity() Copier local entity = fightSlave:entity() Copier fightSlave:getNearestAlly() Copier local ally = fightSlave:getNearestAlly() Copier fightSlave:getNearestEnemy() Copier local enemy = fightSlave:getNearestEnemy() Copier fightSlave:getReachableCells() Copier local cells = fightSlave:getReachableCells() Copier fightSlave:getRealReachableCells() Copier local cells = fightSlave:getRealReachableCells() Copier fightSlave:index() Signature Copier fightSlave:index() Copier local idx = fightSlave:index() Copier fightSlave:InvalidateCache() Copier fightSlave:InvalidateCache() Copier fightSlave:isCellReachable(targetCell) Copier if fightSlave:isCellReachable(256) then fightSlave:moveTowardCell(256) end Copier fightSlave:moveTowardCell(cellid) Signature Copier fightSlave:moveTowardCell(cellid) Copier fightSlave:moveTowardCell(256) Copier fightSlave:name() Copier local name = fightSlave:name() print("Invocation: " .. name) Copier fightSlave:showSpells() Signature Copier fightSlave:showSpells() Copier fightSlave:showSpells() --- # d2data | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#allobjectsfromd2o) allObjectsFromD2O 🎮Méthode Copier d2data:allObjectsFromD2O(d2oName) Retourne tous les objets d'un fichier D2O. Les fichiers D2O contiennent les donnees statiques du jeu. Paramètres: Nom Type Description `d2oName` `string` Nom du fichier D2O (sans extension) Retourne: `table` - Liste de tous les objets du fichier Exemple: example.lua Copier -- Charger toutes les donnees des monstres local monsters = d2data:allObjectsFromD2O("Monsters") for _, monster in ipairs(monsters) do print("Monstre: " .. monster.name .. " (ID: " .. monster.id .. ")") end -- Charger tous les items local items = d2data:allObjectsFromD2O("Items") global:printMessage("Nombre d'items: " .. #items) -- Charger tous les sorts local spells = d2data:allObjectsFromD2O("Spells") for _, spell in ipairs(spells) do if spell.typeId == 0 then -- Sorts de classe print(spell.name) end end circle-info Fichiers D2O disponibles : * Items : Tous les objets du jeu * Monsters : Tous les monstres * Spells : Tous les sorts * Maps : Toutes les cartes * Npcs : Tous les PNJ * Jobs : Tous les metiers * Recipes : Toutes les recettes de craft * Areas : Toutes les zones * SubAreas : Toutes les sous-zones * Interactives : Elements interactifs * Skills : Competences de metiers * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#exportalld2o) exportAllD2O 🎮Méthode Exporte tous les fichiers D2O du jeu au format JSON. Utile pour analyser les donnees hors du bot. Retourne: `void` Exemple: circle-info Cette operation peut prendre plusieurs minutes selon la quantite de donnees. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#exportallmapdata) exportAllMapData 🎮Méthode Exporte toutes les donnees de cartes au format JSON. Exemple: circle-info Exporte les cellules, obstacles, elements interactifs de chaque carte. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#exportd2o) exportD2O 🎮Méthode Exporte un fichier D2O specifique au format JSON. Paramètres: Nom Type Description `d2oName` `string` Nom du fichier D2O a exporter Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#exportmapdata) exportMapData 🎮Méthode Exporte les donnees d'une carte specifique au format JSON. Paramètres: Nom Type Description `mapId` `number` ID de la carte a exporter Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#getitemid) getItemId 🎮Méthode Retourne l'ID d'un objet a partir de son nom. Paramètres: Nom Type Description `itemName` `string` Nom de l'objet (exact) Retourne: `number` - ID de l'objet (GID) Exemple: circle-info Le nom doit etre exact (sensible a la casse). * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#getitemname) getItemName 🎮Méthode Retourne le nom d'un objet a partir de son ID. Paramètres: Nom Type Description `itemId` `number` ID de l'objet (GID) Retourne: `string` - Nom de l'objet Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#mapdata) mapData 🎮Méthode Retourne les donnees completes d'une carte (cellules, obstacles, elements interactifs). Paramètres: Nom Type Description `mapId` `number` ID de la carte Retourne: `Map` - Objet contenant toutes les donnees de la carte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#objectfromd2o) objectFromD2O 🎮Méthode Retourne un objet specifique d'un fichier D2O par son ID. Paramètres: Nom Type Description `d2oName` `string` Nom du fichier D2O `id` `number` ID de l'objet recherche Retourne: `DataClass` - Donnees completes de l'objet Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/d2data#text) text 🎮Méthode Retourne un texte traduit du jeu par son ID. Paramètres: Nom Type Description `textId` `number` ID du texte Retourne: `string` - Texte traduit dans la langue du client Exemple: circle-info Les IDs de texte sont references dans les autres fichiers D2O. [Précédentconfigchevron-left](https://docs.snowbot.eu/methodes/systeme/config) [Suivantdeveloperchevron-right](https://docs.snowbot.eu/methodes/systeme/developer) Mis à jour il y a 2 mois * [allObjectsFromD2O](https://docs.snowbot.eu/methodes/systeme/d2data#allobjectsfromd2o) * [exportAllD2O](https://docs.snowbot.eu/methodes/systeme/d2data#exportalld2o) * [exportAllMapData](https://docs.snowbot.eu/methodes/systeme/d2data#exportallmapdata) * [exportD2O](https://docs.snowbot.eu/methodes/systeme/d2data#exportd2o) * [exportMapData](https://docs.snowbot.eu/methodes/systeme/d2data#exportmapdata) * [getItemId](https://docs.snowbot.eu/methodes/systeme/d2data#getitemid) * [getItemName](https://docs.snowbot.eu/methodes/systeme/d2data#getitemname) * [mapData](https://docs.snowbot.eu/methodes/systeme/d2data#mapdata) * [objectFromD2O](https://docs.snowbot.eu/methodes/systeme/d2data#objectfromd2o) * [text](https://docs.snowbot.eu/methodes/systeme/d2data#text) Copier d2data:exportAllD2O() example.lua Copier -- Exporter toutes les donnees du jeu d2data:exportAllD2O() global:printSuccess("Export complet termine!") -- Les fichiers sont exportes dans le dossier d'export Copier d2data:exportAllMapData() example.lua Copier d2data:exportAllMapData() global:printSuccess("Export des cartes termine!") Copier d2data:exportD2O(d2oName) example.lua Copier -- Exporter les items d2data:exportD2O("Items") -- Exporter les monstres d2data:exportD2O("Monsters") -- Exporter les sorts d2data:exportD2O("Spells") Copier d2data:exportMapData(mapId) example.lua Copier -- Exporter la carte actuelle local currentMap = map:currentMapId() d2data:exportMapData(currentMap) global:printSuccess("Carte " .. currentMap .. " exportee!") Copier d2data:getItemId(itemName) example.lua Copier -- Trouver l'ID du ble local idBle = d2data:getItemId("Ble") global:printMessage("ID du Ble: " .. idBle) -- 289 -- Trouver l'ID d'un equipement local idEpee = d2data:getItemId("Epee du Petit Chevalier") global:printMessage("ID de l'epee: " .. idEpee) -- Utiliser pour GATHER GATHER = { d2data:getItemId("Ble"), d2data:getItemId("Orge"), d2data:getItemId("Avoine"), } Copier d2data:getItemName(itemId) example.lua Copier -- Trouver le nom d'un objet local nomObjet = d2data:getItemName(289) global:printMessage("Objet 289: " .. nomObjet) -- "Ble" -- Afficher le contenu de l'inventaire avec les noms local items = inventory:inventoryContent() for _, item in ipairs(items) do local nom = d2data:getItemName(item.objectGID) global:printMessage(nom .. " x" .. item.quantity) end Copier d2data:mapData(mapId) example.lua Copier -- Recuperer les infos de la carte actuelle local mapId = map:currentMapId() local mapInfo = d2data:mapData(mapId) -- Afficher les informations global:printMessage("Nombre de cellules: " .. #mapInfo.cells) -- Trouver les cellules accessibles local cellulesAccessibles = {} for i, cell in ipairs(mapInfo.cells) do if cell.mov then -- Cellule accessible table.insert(cellulesAccessibles, i) end end global:printMessage("Cellules accessibles: " .. #cellulesAccessibles) Copier d2data:objectFromD2O(d2oName, id) example.lua Copier -- Recuperer les infos d'un item local item = d2data:objectFromD2O("Items", 289) global:printMessage("Nom: " .. item.name) global:printMessage("Niveau: " .. item.level) global:printMessage("Type: " .. item.typeId) -- Recuperer les infos d'un monstre local monster = d2data:objectFromD2O("Monsters", 100) global:printMessage("Monstre: " .. monster.name) -- Recuperer les infos d'un sort local spell = d2data:objectFromD2O("Spells", 12345) global:printMessage("Sort: " .. spell.name) global:printMessage("Cout PA: " .. (spell.apCost or "variable")) -- Recuperer les infos d'un metier local job = d2data:objectFromD2O("Jobs", 2) -- Bucheron global:printMessage("Metier: " .. job.name) Copier d2data:text(textId) example.lua Copier -- Recuperer un texte du jeu local text = d2data:text(123456) global:printMessage(text) -- Les textes sont utilises pour les noms, descriptions, dialogues, etc. --- # fightCharacter | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getap) getAP **🎮Méthode** Copier fightCharacter:getAP() Retourne les Points d'Action (PA) actuels du personnage en combat. Les PA sont mis a jour en temps reel par le serveur et sont utilises pour lancer des sorts. **Retourne:** `number` - Nombre de PA disponibles ce tour **Exemple:** Copier -- Verifier si on peut lancer un sort coutant 4 PA local ap = fightCharacter:getAP() if ap >= 4 then fightAction:castSpellOnCell(12345, enemyCellId) end -- Gestion intelligente des PA local pa = fightCharacter:getAP() while pa >= 3 do fightAction:castSpellOnCell(sortId, cible) pa = fightCharacter:getAP() -- Rafraichir apres chaque sort end -- Afficher les PA restants global:printMessage("PA restants: " .. fightCharacter:getAP()) circle-info Les PA sont recharges au debut de chaque tour. Valeur mise a jour apres chaque action (sort, mouvement avec cout PA, etc.). * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getmp) getMP **🎮Méthode** Retourne les Points de Mouvement (PM) actuels du personnage en combat. Les PM sont utilises pour se deplacer sur les cellules du combat. **Retourne:** `number` - Nombre de PM disponibles ce tour **Exemple:** circle-info Les PM sont recharges au debut de chaque tour. Valeur mise a jour apres chaque deplacement. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getpo) getPO **🎮Méthode** Retourne la Portee (PO) actuelle du personnage en combat. La portee determine la distance maximale a laquelle le personnage peut lancer certains sorts. **Signature:** **Retourne:** `number` - Portee actuelle du personnage **Exemple:** circle-info La portee peut etre modifiee par des buffs, des etats ou de l'equipement. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#forceap) forceAP **🎮Méthode** Force/modifie la valeur des Points d'Action stockee localement. ATTENTION: Cette modification est locale uniquement - elle ne change pas les PA reels sur le serveur. Utile pour des tests ou des ajustements d'IA. **Paramètres:** Nom Type Description `ap` `number` Nouveau nombre de PA a definir localement **Exemple:** circle-exclamation ATTENTION: Modification locale uniquement! N'affecte pas le serveur. A utiliser avec precaution, principalement pour le debug ou des scenarios de test. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#forcemp) forceMP **🎮Méthode** Force/modifie la valeur des Points de Mouvement stockee localement. ATTENTION: Modification locale uniquement, n'affecte pas le serveur. **Paramètres:** Nom Type Description `mp` `number` Nouveau nombre de PM a definir localement **Exemple:** circle-exclamation ATTENTION: Modification locale uniquement! N'affecte pas le serveur. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#forcepo) forcePO **🎮Méthode** Force/modifie la valeur de la Portee stockee localement. ATTENTION: Modification locale uniquement, n'affecte pas le serveur. **Paramètres:** Nom Type Description `po` `number` Nouvelle portee a definir localement **Exemple:** circle-exclamation ATTENTION: Modification locale uniquement! N'affecte pas le serveur. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlifepoints) getLifePoints **🎮Méthode** Retourne les Points de Vie (PV) actuels du personnage en combat. **Retourne:** `number` - PV actuels du personnage **Exemple:** circle-info Les PV sont mis a jour apres chaque action affectant la vie (degats recus, soins, etc.). * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlifepointsmax) getLifePointsMax **🎮Méthode** Retourne les Points de Vie maximum du personnage en combat. **Retourne:** `number` - PV maximum du personnage **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlifepointsp) getLifePointsP **🎮Méthode** Retourne le pourcentage de vie actuel du personnage. Calcule automatiquement: (LifePoints \* 100) / MaxLifePoints via une division entiere. **Retourne:** `number` - Pourcentage de vie (0-100, entier) **Exemple:** circle-info Retourne un entier (division entiere). Pour plus de precision, calculez manuellement avec getLifePoints() / getLifePointsMax() \* 100. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getcellid) getCellId **🎮Méthode** Retourne l'ID de la cellule actuelle du personnage sur la grille de combat. **Retourne:** `number` - ID de la cellule (0-559) **Exemple:** circle-info Les cellules de combat vont de 0 a 559 (grille 14x40). La position est mise a jour apres chaque deplacement. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getid) getId **🎮Méthode** Retourne l'ID contextuel du personnage en combat. Cet ID est unique pour chaque combattant dans le combat actuel. **Retourne:** `number` - ID contextuel du combattant **Exemple:** circle-info L'ID contextuel change a chaque combat. Ne pas confondre avec l'ID permanent du personnage (character:getId()). * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlevel) getLevel **🎮Méthode** Retourne le niveau du personnage en combat. **Retourne:** `number` - Niveau du personnage **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getbreed) getBreed **🎮Méthode** Retourne l'ID de la classe du personnage. Les classes sont identifiees par un ID numerique (1=Feca, 2=Osamodas, 3=Enutrof, etc.). **Retourne:** `number` - ID de la classe (1-19) **Exemple:** circle-info Utile pour creer des scripts d'IA adaptes a chaque classe. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#getrange) getRange **🎮Méthode** Retourne la portee de base du personnage. Cette valeur prend en compte les bonus de portee de l'equipement et des buffs. **Retourne:** `number` - Portee de base calculee **Exemple:** circle-info Peut differer de getPO() selon les buffs/debuffs temporaires appliques en combat. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#isitmyturn) isItMyTurn **🎮Méthode** Verifie si c'est actuellement le tour du personnage. Cette valeur est mise a jour automatiquement au debut de chaque tour. **Retourne:** `boolean` - true si c'est le tour du personnage, false sinon **Exemple:** triangle-exclamation IMPORTANT: Toujours verifier isItMyTurn() avant d'effectuer des actions de combat pour eviter des erreurs. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightcharacter#ismule) isMule **🎮Méthode** Verifie si le personnage est une mule (membre d'equipe non-chef). Les mules suivent generalement des comportements simplifies en combat. **Retourne:** `boolean` - true si le personnage est une mule d'equipe, false sinon **Exemple:** circle-info Une mule est un personnage en equipe qui n'est pas le chef. Le chef (ChefTeam=true) dirige le combat. [PrécédentCombatchevron-left](https://docs.snowbot.eu/methodes/combat) [SuivantfightDebugchevron-right](https://docs.snowbot.eu/methodes/combat/fightdebug) Mis à jour il y a 2 mois * [getAP](https://docs.snowbot.eu/methodes/combat/fightcharacter#getap) * [getMP](https://docs.snowbot.eu/methodes/combat/fightcharacter#getmp) * [getPO](https://docs.snowbot.eu/methodes/combat/fightcharacter#getpo) * [forceAP](https://docs.snowbot.eu/methodes/combat/fightcharacter#forceap) * [forceMP](https://docs.snowbot.eu/methodes/combat/fightcharacter#forcemp) * [forcePO](https://docs.snowbot.eu/methodes/combat/fightcharacter#forcepo) * [getLifePoints](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlifepoints) * [getLifePointsMax](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlifepointsmax) * [getLifePointsP](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlifepointsp) * [getCellId](https://docs.snowbot.eu/methodes/combat/fightcharacter#getcellid) * [getId](https://docs.snowbot.eu/methodes/combat/fightcharacter#getid) * [getLevel](https://docs.snowbot.eu/methodes/combat/fightcharacter#getlevel) * [getBreed](https://docs.snowbot.eu/methodes/combat/fightcharacter#getbreed) * [getRange](https://docs.snowbot.eu/methodes/combat/fightcharacter#getrange) * [isItMyTurn](https://docs.snowbot.eu/methodes/combat/fightcharacter#isitmyturn) * [isMule](https://docs.snowbot.eu/methodes/combat/fightcharacter#ismule) Copier fightCharacter:getMP() Copier -- Verifier si on peut se deplacer local mp = fightCharacter:getMP() if mp > 0 then fightAction:moveToCell(cellCible) end -- Strategie de mouvement local pm = fightCharacter:getMP() local distance = fightAction:getDistanceToCell(enemyCellId) if pm >= distance then fightAction:moveToCell(enemyCellId) else global:printMessage("Pas assez de PM pour atteindre l'ennemi") end Copier fightCharacter:getPO() Copier -- Verifier la portee pour un sort local po = fightCharacter:getPO() local distance = fightAction:getDistanceToCell(enemyCellId) if distance <= po then global:printMessage("Ennemi a portee!") end -- Afficher les stats de combat global:printMessage("PA: " .. fightCharacter:getAP() .. " | PM: " .. fightCharacter:getMP() .. " | PO: " .. fightCharacter:getPO()) Copier fightCharacter:forceAP(ap) Copier -- Forcer les PA pour un test fightCharacter:forceAP(12) global:printMessage("PA forces a: " .. fightCharacter:getAP()) -- Reset des PA (utile apres un bug de synchro) fightCharacter:forceAP(0) Copier fightCharacter:forceMP(mp) Copier -- Forcer les PM pour un test fightCharacter:forceMP(6) -- Simuler un personnage immobilise fightCharacter:forceMP(0) Copier fightCharacter:forcePO(po) Copier -- Forcer la portee pour un test fightCharacter:forcePO(8) -- Simuler un buff de portee local poActuelle = fightCharacter:getPO() fightCharacter:forcePO(poActuelle + 2) Copier fightCharacter:getLifePoints() Copier -- Verifier si on a besoin de se soigner local hp = fightCharacter:getLifePoints() local hpMax = fightCharacter:getLifePointsMax() if hp < hpMax * 0.3 then global:printWarning("Vie critique! " .. hp .. "/" .. hpMax) -- Lancer un sort de soin end -- Afficher la vie global:printMessage("Vie: " .. fightCharacter:getLifePoints()) Copier fightCharacter:getLifePointsMax() Copier -- Calculer le pourcentage de vie manuellement local hp = fightCharacter:getLifePoints() local hpMax = fightCharacter:getLifePointsMax() local pourcentage = (hp / hpMax) * 100 global:printMessage("Vie: " .. hp .. "/" .. hpMax .. " (" .. pourcentage .. "%)") -- Verifier si a pleine vie if fightCharacter:getLifePoints() == fightCharacter:getLifePointsMax() then global:printMessage("Pleine vie!") end Copier fightCharacter:getLifePointsP() Copier -- Logique de survie basee sur le pourcentage local hpPercent = fightCharacter:getLifePointsP() if hpPercent < 20 then global:printError("DANGER! Vie a " .. hpPercent .. "%") -- Fuir ou utiliser une potion elseif hpPercent < 50 then global:printWarning("Vie moyenne: " .. hpPercent .. "%") -- Se soigner si possible else global:printSuccess("Vie OK: " .. hpPercent .. "%") end -- Priorite au soin selon le pourcentage if fightCharacter:getLifePointsP() <= 30 then -- Priorite absolue: se soigner fightAction:castSpellOnCell(sortSoin, fightCharacter:getCellId()) end Copier fightCharacter:getCellId() Copier -- Connaitre sa position local maCell = fightCharacter:getCellId() global:printMessage("Je suis sur la cellule: " .. maCell) -- Calculer la distance a un ennemi local maCellule = fightCharacter:getCellId() local celluleEnnemi = enemy.cellId local distance = fightAction:getDistanceBetweenCells(maCellule, celluleEnnemi) global:printMessage("Distance a l'ennemi: " .. distance) -- Cibler ma propre cellule pour un sort de zone fightAction:castSpellOnCell(sortZone, fightCharacter:getCellId()) Copier fightCharacter:getId() Copier -- Recuperer mon ID de combat local monId = fightCharacter:getId() global:printMessage("Mon ID de combat: " .. monId) -- Utiliser l'ID pour des verifications local fighters = fightAction:getAllFighters() for _, fighter in ipairs(fighters) do if fighter.id == fightCharacter:getId() then global:printMessage("C'est moi!") end end Copier fightCharacter:getLevel() Copier -- Afficher le niveau local niveau = fightCharacter:getLevel() global:printMessage("Niveau: " .. niveau) -- Adapter la strategie au niveau if fightCharacter:getLevel() < 50 then -- Strategie debutant: jouer safe elseif fightCharacter:getLevel() < 150 then -- Strategie intermediaire else -- Strategie avancee end Copier fightCharacter:getBreed() Copier -- Adapter l'IA selon la classe local classe = fightCharacter:getBreed() if classe == 1 then global:printMessage("Je suis un Feca - Mode Tank") elseif classe == 11 then global:printMessage("Je suis un Sacrieur - Mode Berserker") elseif classe == 12 then global:printMessage("Je suis un Pandawa - Mode Support") end -- Classes: 1=Feca, 2=Osa, 3=Enu, 4=Sram, 5=Xelor, 6=Eca, 7=Eni, -- 8=Iop, 9=Cra, 10=Sadida, 11=Sacri, 12=Panda, 13=Roub, -- 14=Zobal, 15=Steamer, 16=Elio, 17=Huppermage, 18=Ouginak, 19=Forgelance Copier fightCharacter:getRange() Copier -- Comparer portee de base et actuelle local rangeBase = fightCharacter:getRange() local rangeActuel = fightCharacter:getPO() global:printMessage("Portee base: " .. rangeBase .. ", actuelle: " .. rangeActuel) Copier fightCharacter:isItMyTurn() Copier -- Verifier avant d'agir if fightCharacter:isItMyTurn() then global:printMessage("C'est mon tour!") -- Executer l'IA de combat fightAction:castSpellOnCell(sortId, cibleCellId) else global:printMessage("En attente de mon tour...") end -- Boucle d'IA principale function fightManagement() if not fightCharacter:isItMyTurn() then return -- Pas mon tour, on sort end -- Logique de combat ici while fightCharacter:getAP() >= 3 do -- Actions de combat end fightAction:endTurn() end Copier fightCharacter:isMule() Copier -- Adapter le comportement selon le role if fightCharacter:isMule() then global:printMessage("Je suis une mule - Mode support") -- Comportement de mule: buff, heal, protection du chef else global:printMessage("Je suis le chef - Mode attaque") -- Comportement du chef: focus DPS end -- Logique de mule simplifiee function fightManagement() if fightCharacter:isMule() then -- La mule suit le chef et le protege local chefCellId = getChefPosition() if chefCellId then fightAction:moveCloseTo(chefCellId) end else -- Logique d'attaque complete attackNearestEnemy() end end --- # quest | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#activequests) activeQuests **🎮Méthode** Copier quest:activeQuests() Retourne la liste des quetes actives. **Retourne:** `table` - Liste des quetes en cours **Exemple:** example.lua Copier local quests = quest:activeQuests() for _, q in ipairs(quests) do print("Quete: " .. quest:name(q.questId)) end * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#challengename) challengeName **🎮Méthode** Copier quest:challengeName(id) Retourne le nom d'un challenge par son ID. **Paramètres:** Nom Type Description `id` `number` ID du challenge **Retourne:** `string` - Nom du challenge **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#initialize) initialize **🎮Méthode** Initialise le systeme de quetes. **Retourne:** `boolean` - true si initialise avec succes **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#mainpath) mainPath **🎮Méthode** Retourne le chemin principal des quetes. **Retourne:** `string` - Chemin des quetes **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#monstername) monsterName **🎮Méthode** Retourne le nom d'un monstre par son ID. **Paramètres:** Nom Type Description `id` `number` ID du monstre **Retourne:** `string` - Nom du monstre **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#name) name **🎮Méthode** Retourne le nom d'une quete par son ID. **Paramètres:** Nom Type Description `id` `number` ID de la quete **Retourne:** `string` - Nom de la quete **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#npcname) npcName **🎮Méthode** Retourne le nom d'un PNJ par son ID. **Paramètres:** Nom Type Description `id` `number` ID du PNJ **Retourne:** `string` - Nom du PNJ **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#objectivetext) objectiveText **🎮Méthode** Retourne le texte descriptif d'un objectif. **Signature:** `quest:objectiveText(objectiveId)` **Paramètres:** Nom Type Description `objectiveId` `number` ID de l'objectif **Retourne:** `string` - Texte de l'objectif **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#objectivetypename) objectiveTypeName **🎮Méthode** Retourne le type d'un objectif. **Paramètres:** Nom Type Description `id` `number` ID du type **Retourne:** `string` - Nom du type d'objectif **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#path) path **🎮Méthode** Retourne le chemin de quete actuel. **Retourne:** `table` - Chemin de la quete **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#questactive) questActive **🎮Méthode** Verifie si une quete est active. **Paramètres:** Nom Type Description `questId` `number` ID de la quete **Retourne:** `boolean` - true si la quete est active **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#questcurrentstep) questCurrentStep **🎮Méthode** Retourne l'etape actuelle d'une quete. **Paramètres:** Nom Type Description `questId` `number` ID de la quete **Retourne:** `number` - Numero de l'etape actuelle **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#questdoneobjectives) questDoneObjectives **🎮Méthode** Retourne les objectifs termines d'une quete. **Paramètres:** Nom Type Description `questId` `number` ID de la quete **Retourne:** `table` - Liste des objectifs termines **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#questobjectivedone) questObjectiveDone **🎮Méthode** Verifie si un objectif est termine. **Paramètres:** Nom Type Description `questId` `number` ID de la quete `objectiveId` `number` ID de l'objectif **Retourne:** `boolean` - true si l'objectif est termine **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#questremainingobjectives) questRemainingObjectives **🎮Méthode** Retourne les objectifs restants d'une quete. **Paramètres:** Nom Type Description `questId` `number` ID de la quete **Retourne:** `table` - Liste des objectifs restants **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#stepdescription) stepDescription **🎮Méthode** Retourne la description d'une etape. **Paramètres:** Nom Type Description `id` `number` ID de l'etape **Retourne:** `string` - Description de l'etape **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#stepname) stepName **🎮Méthode** Retourne le nom d'une etape. **Paramètres:** Nom Type Description `id` `number` ID de l'etape **Retourne:** `string` - Nom de l'etape **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#text) text **🎮Méthode** Retourne un texte par son ID. **Signature:** `quest:text(nameId)` **Paramètres:** Nom Type Description `nameId` `number` ID du texte **Retourne:** `string` - Texte **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/activites/quest#validateobjective) validateObjective **🎮Méthode** Valide un objectif de quete. **Signature:** `quest:validateObjective(questId, objectiveId)` **Paramètres:** Nom Type Description `questId` `number` ID de la quete `objectiveId` `number` ID de l'objectif **Retourne:** `boolean` - true si valide avec succes **Exemple:** * * * [Précédenttreasurechevron-left](https://docs.snowbot.eu/methodes/activites/treasure) [SuivantSystèmechevron-right](https://docs.snowbot.eu/methodes/systeme) Mis à jour il y a 2 mois * [activeQuests](https://docs.snowbot.eu/methodes/activites/quest#activequests) * [challengeName](https://docs.snowbot.eu/methodes/activites/quest#challengename) * [initialize](https://docs.snowbot.eu/methodes/activites/quest#initialize) * [mainPath](https://docs.snowbot.eu/methodes/activites/quest#mainpath) * [monsterName](https://docs.snowbot.eu/methodes/activites/quest#monstername) * [name](https://docs.snowbot.eu/methodes/activites/quest#name) * [npcName](https://docs.snowbot.eu/methodes/activites/quest#npcname) * [objectiveText](https://docs.snowbot.eu/methodes/activites/quest#objectivetext) * [objectiveTypeName](https://docs.snowbot.eu/methodes/activites/quest#objectivetypename) * [path](https://docs.snowbot.eu/methodes/activites/quest#path) * [questActive](https://docs.snowbot.eu/methodes/activites/quest#questactive) * [questCurrentStep](https://docs.snowbot.eu/methodes/activites/quest#questcurrentstep) * [questDoneObjectives](https://docs.snowbot.eu/methodes/activites/quest#questdoneobjectives) * [questObjectiveDone](https://docs.snowbot.eu/methodes/activites/quest#questobjectivedone) * [questRemainingObjectives](https://docs.snowbot.eu/methodes/activites/quest#questremainingobjectives) * [stepDescription](https://docs.snowbot.eu/methodes/activites/quest#stepdescription) * [stepName](https://docs.snowbot.eu/methodes/activites/quest#stepname) * [text](https://docs.snowbot.eu/methodes/activites/quest#text) * [validateObjective](https://docs.snowbot.eu/methodes/activites/quest#validateobjective) example.lua Copier local name = quest:challengeName(123) Copier quest:initialize() example.lua Copier quest:initialize() Copier quest:mainPath() example.lua Copier local path = quest:mainPath() Copier quest:monsterName(id) example.lua Copier local name = quest:monsterName(123) Copier quest:name(id) example.lua Copier local questName = quest:name(456) print("Quete: " .. questName) Copier quest:npcName(id) example.lua Copier local npc = quest:npcName(789) Copier quest:objectiveText(objectiveId) example.lua Copier local text = quest:objectiveText(123) Copier quest:objectiveTypeName(id) example.lua Copier local typeName = quest:objectiveTypeName(1) Copier quest:path() example.lua Copier local path = quest:path() Copier quest:questActive(questId) example.lua Copier if quest:questActive(123) then print("Quete en cours!") end Copier quest:questCurrentStep(questId) example.lua Copier local step = quest:questCurrentStep(123) print("Etape: " .. step) Copier quest:questDoneObjectives(questId) example.lua Copier local done = quest:questDoneObjectives(123) Copier quest:questObjectiveDone(questId, objectiveId) example.lua Copier if quest:questObjectiveDone(123, 456) then print("Objectif complete!") end Copier quest:questRemainingObjectives(questId) example.lua Copier local remaining = quest:questRemainingObjectives(123) print("Objectifs restants: " .. #remaining) Copier quest:stepDescription(id) example.lua Copier local desc = quest:stepDescription(123) Copier quest:stepName(id) example.lua Copier local name = quest:stepName(123) Copier quest:text(nameId) example.lua Copier local text = quest:text(123) example.lua Copier quest:validateObjective(123, 456) --- # sale | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#availablespace) AvailableSpace **🎮Méthode** Copier sale:AvailableSpace() Retourne le nombre d'emplacements disponibles en HDV. **Retourne:** `number` - Nombre d'emplacements libres **Exemple:** Copier local space = sale:AvailableSpace() print("Emplacements disponibles: " .. space) * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#buyitem) buyItem **🎮Méthode** Copier sale:buyItem(GID, Lots, PriceMax, delay) Achete un objet en HDV. **Paramètres:** Nom Type Description `GID` `number` ID general de l'objet `Lots` `number` Nombre de lots (1, 10, 100) `PriceMax` `number` Prix maximum acceptable `delay` `number` Delai entre les achats (ms) **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#buytopnj) buyToPnj **🎮Méthode** Achete un objet a un PNJ marchand. **Paramètres:** Nom Type Description `ItemGID` `number` GID de l'objet `Quantity` `number` Quantite a acheter **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#editprice) EditPrice **🎮Méthode** Modifie le prix d'un objet en vente par son GUID. **Paramètres:** Nom Type Description `GUID` `number` GUID de l'objet en vente `Price` `number` Nouveau prix `Qtte` `number` Quantite concernee **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#editpricebygid) EditPriceByGID **🎮Méthode** Modifie le prix d'un objet en vente par son GID. **Paramètres:** Nom Type Description `GID` `number` GID de l'objet `Price` `number` Nouveau prix `Qtte` `number` Quantite concernee **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getaveragepriceitem) getAveragePriceItem **🎮Méthode** Retourne le prix moyen d'un objet en HDV. **Paramètres:** Nom Type Description `ItemGID` `number` GID de l'objet `Lots` `number` Taille du lot (1, 10, 100) **Retourne:** `number` - Prix moyen **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getgid) getGID **🎮Méthode** Retourne le GID d'un objet en vente. **Paramètres:** Nom Type Description `objectID` `number` ID de l'objet **Retourne:** `number` - GID de l'objet **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getitemgid) GetItemGID **🎮Méthode** Retourne le GID de l'objet a l'index specifie dans la liste des ventes. **Paramètres:** Nom Type Description `Index` `number` Index dans la liste **Retourne:** `number` - GID de l'objet **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getitemguid) GetItemGUID **🎮Méthode** Retourne le GUID de l'objet a l'index specifie. **Paramètres:** Nom Type Description `Index` `number` Index dans la liste **Retourne:** `number` - GUID de l'objet **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getitemprice) GetItemPrice **🎮Méthode** Retourne le prix de l'objet a l'index specifie. **Paramètres:** Nom Type Description `Index` `number` Index dans la liste **Retourne:** `number` - Prix de l'objet **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getitemquantity) GetItemQuantity **🎮Méthode** Retourne la quantite de l'objet a l'index specifie. **Paramètres:** Nom Type Description `Index` `number` Index dans la liste **Retourne:** `number` - Quantite de l'objet **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getlots) GetLots **🎮Méthode** Convertit une quantite en nombre de lots. **Signature:** `sale:GetLots(quantity)` **Paramètres:** Nom Type Description `quantity` `number` Quantite totale **Retourne:** `number` - Nombre de lots **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#getpriceitem) GetPriceItem **🎮Méthode** Retourne le prix actuel d'un objet en HDV. **Paramètres:** Nom Type Description `ItemGID` `number` GID de l'objet `Lots` `number` Taille du lot **Retourne:** `number` - Prix actuel **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#itemsonsale) ItemsOnSale **🎮Méthode** Retourne le nombre d'objets actuellement en vente. **Retourne:** `number` - Nombre d'objets en vente **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#sellallitemtopnj) sellAllItemToPnj **🎮Méthode** Vend tous les objets vendables au PNJ. **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#sellallitemtopnjsecret) sellAllItemToPnjSecret **🎮Méthode** Vend tous les objets au PNJ (mode silencieux). **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#sellitem) SellItem **🎮Méthode** Met un objet en vente en HDV. **Paramètres:** Nom Type Description `ItemGID` `number` GID de l'objet `Lots` `number` Nombre de lots `price` `number` Prix de vente **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#selltopnj) sellToPnj **🎮Méthode** Vend un objet specifique au PNJ. **Paramètres:** Nom Type Description `ItemGID` `number` GID de l'objet `Quantity` `number` Quantite a vendre **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/economie/sale#updateallitems) UpdateAllItems **🎮Méthode** Met a jour les informations de tous les objets en vente. **Exemple:** * * * [Précédentexchangechevron-left](https://docs.snowbot.eu/methodes/economie/exchange) [Suivantmerchantchevron-right](https://docs.snowbot.eu/methodes/economie/merchant) Mis à jour il y a 2 mois * [AvailableSpace](https://docs.snowbot.eu/methodes/economie/sale#availablespace) * [buyItem](https://docs.snowbot.eu/methodes/economie/sale#buyitem) * [buyToPnj](https://docs.snowbot.eu/methodes/economie/sale#buytopnj) * [EditPrice](https://docs.snowbot.eu/methodes/economie/sale#editprice) * [EditPriceByGID](https://docs.snowbot.eu/methodes/economie/sale#editpricebygid) * [getAveragePriceItem](https://docs.snowbot.eu/methodes/economie/sale#getaveragepriceitem) * [getGID](https://docs.snowbot.eu/methodes/economie/sale#getgid) * [GetItemGID](https://docs.snowbot.eu/methodes/economie/sale#getitemgid) * [GetItemGUID](https://docs.snowbot.eu/methodes/economie/sale#getitemguid) * [GetItemPrice](https://docs.snowbot.eu/methodes/economie/sale#getitemprice) * [GetItemQuantity](https://docs.snowbot.eu/methodes/economie/sale#getitemquantity) * [GetLots](https://docs.snowbot.eu/methodes/economie/sale#getlots) * [GetPriceItem](https://docs.snowbot.eu/methodes/economie/sale#getpriceitem) * [ItemsOnSale](https://docs.snowbot.eu/methodes/economie/sale#itemsonsale) * [sellAllItemToPnj](https://docs.snowbot.eu/methodes/economie/sale#sellallitemtopnj) * [sellAllItemToPnjSecret](https://docs.snowbot.eu/methodes/economie/sale#sellallitemtopnjsecret) * [SellItem](https://docs.snowbot.eu/methodes/economie/sale#sellitem) * [sellToPnj](https://docs.snowbot.eu/methodes/economie/sale#selltopnj) * [UpdateAllItems](https://docs.snowbot.eu/methodes/economie/sale#updateallitems) Copier -- Acheter 1 lot de l'objet 289 pour max 10000 kamas sale:buyItem(289, 1, 10000, 500) Copier sale:buyToPnj(ItemGID, Quantity) Copier -- Acheter 100 potions au PNJ sale:buyToPnj(289, 100) Copier sale:EditPrice(GUID, Price, Qtte) Copier sale:EditPrice(123456789, 5000, 10) Copier sale:EditPriceByGID(GID, Price, Qtte) Copier sale:EditPriceByGID(289, 5000, 10) Copier sale:getAveragePriceItem(ItemGID, Lots) Copier local avg = sale:getAveragePriceItem(289, 1) print("Prix moyen: " .. avg .. " kamas") Copier sale:getGID(objectID) Copier local gid = sale:getGID(123456) Copier sale:GetItemGID(Index) Copier local gid = sale:GetItemGID(0) -- Premier objet Copier sale:GetItemGUID(Index) Copier local guid = sale:GetItemGUID(0) Copier sale:GetItemPrice(Index) Copier local price = sale:GetItemPrice(0) Copier sale:GetItemQuantity(Index) Copier local qty = sale:GetItemQuantity(0) Copier sale:GetLots(quantity) Copier local lots = sale:GetLots(50) -- Retourne le nombre de lots pour 50 objets Copier sale:GetPriceItem(ItemGID, Lots) Copier local price = sale:GetPriceItem(289, 1) Copier sale:ItemsOnSale() Copier local count = sale:ItemsOnSale() print("Objets en vente: " .. count) Copier sale:sellAllItemToPnj() Copier sale:sellAllItemToPnj() print("Tous les objets vendus au PNJ") Copier sale:sellAllItemToPnjSecret() Copier sale:sellAllItemToPnjSecret() Copier sale:SellItem(ItemGID, Lots, price) Copier -- Vendre 1 lot de l'objet 289 a 5000 kamas sale:SellItem(289, 1, 5000) Copier sale:sellToPnj(ItemGID, Quantity) Copier -- Vendre 50 potions au PNJ sale:sellToPnj(289, 50) Copier sale:UpdateAllItems() Copier sale:UpdateAllItems() print("Liste des ventes mise a jour") --- # mount | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#addpaddockitem) addPaddockItem Ajoute un objet dans l'enclos. Signature: `mount:addPaddockItem(UID, cellId)` Paramètres: Nom Type Description `UID` `number` UID de l'objet `cellId` `number` Cellule cible Retourne: `object` Exemple: Copier mount:addPaddockItem(123456, 256) * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#deletemountlist) DeleteMountList Supprime la liste des montures en cache. Signature: `mount:DeleteMountList()` Exemple: Copier mount:DeleteMountList() * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#feedmount) feedMount Nourrit la monture avec un objet. Signature: `mount:feedMount(Gid, Quantity)` Paramètres: Nom Type Description `Gid` `number` GID de la nourriture `Quantity` `number` Quantite Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#getenergy) getEnergy Retourne l'energie actuelle de la monture. Signature: `mount:getEnergy()` Retourne: `number` - Points d'energie Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#getmaxenergy) getMaxEnergy Retourne l'energie maximale de la monture. Signature: `mount:getMaxEnergy()` Retourne: `number` - Points d'energie max Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#getpaddockinformations) getPaddockInformations Retourne les informations de l'enclos actuel. Signature: `mount:getPaddockInformations()` Retourne: `PaddockContentInformations` - Informations de l'enclos Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#hasmount) hasMount Verifie si le personnage possede une monture. Signature: `mount:hasMount()` Retourne: `boolean` - true si une monture est possedee Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#id) id Retourne l'ID de la monture equipee. Signature: `mount:id()` Retourne: `number` - ID de la monture Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#inventorymounts) inventoryMounts Retourne les montures dans l'inventaire (certificats). Signature: `mount:inventoryMounts()` Retourne: `table` - Liste des montures Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#inventorymountsdata) inventoryMountsData Retourne les donnees detaillees des montures en inventaire. Signature: `mount:inventoryMountsData()` Retourne: `table` - Donnees des montures Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#isrideable) isRideable Verifie si la monture peut etre montee. Signature: `mount:isRideable()` Retourne: `boolean` - true si montable Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#isriding) isRiding Verifie si le personnage est sur sa monture. Signature: `mount:isRiding()` Retourne: `boolean` - true si monte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#level) level Retourne le niveau de la monture. Signature: `mount:level()` Retourne: `number` - Niveau de la monture Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#maxpods) maxPods Retourne les pods bonus de la monture. Signature: `mount:maxPods()` Retourne: `number` - Pods bonus Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#mountinformation) mountInformation Recupere les informations d'une monture. Signature: `mount:mountInformation(id, time)` Paramètres: Nom Type Description `id` `number` ID de la monture `time` `number` Timeout Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#movemounts) moveMounts Deplace des montures entre etable/enclos/inventaire. Signature: `mount:moveMounts(idList, action)` Paramètres: Nom Type Description `idList` `table` Liste des IDs de montures `action` `number` Type d'action Retourne: `number` - Nombre de montures deplacees Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#movepaddockitem) movePaddockItem Deplace un objet dans l'enclos. Signature: `mount:movePaddockItem(fromCellId, toCellId)` Paramètres: Nom Type Description `fromCellId` `number` Cellule source `toCellId` `number` Cellule destination Retourne: `object` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#mymount) myMount Retourne les donnees de la monture equipee. Signature: `mount:myMount()` Retourne: `MountClientData` - Donnees de la monture Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#newborns) newBorns Retourne la liste des nouveaux-nes. Signature: `mount:newBorns()` Retourne: `table` - Liste des bebes montures Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#paddockedmounts) paddockedMounts Retourne les montures dans l'enclos. Signature: `mount:paddockedMounts()` Retourne: `table` - Liste des montures en enclos Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#putpaddockitem) putPaddockItem Place un objet dans l'enclos. Signature: `mount:putPaddockItem(UID, cellId)` Paramètres: Nom Type Description `UID` `number` UID de l'objet `cellId` `number` Cellule cible Retourne: `object` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#removepaddockitem) removePaddockItem Retire un objet de l'enclos. Signature: `mount:removePaddockItem(cellId)` Paramètres: Nom Type Description `cellId` `number` Cellule de l'objet Retourne: `object` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#retiremountset) RetireMountSet Retire le set de monture. Signature: `mount:RetireMountSet()` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#setxpratio) setXpRatio Definit le ratio d'XP donne a la monture. Signature: `mount:setXpRatio(Xp)` Paramètres: Nom Type Description `Xp` `number` Pourcentage d'XP (0-90) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#stabledmounts) stabledMounts Retourne les montures en etable. Signature: `mount:stabledMounts()` Retourne: `table` - Liste des montures en etable Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#switchmount) switchMount Change de monture via l'enclos. Signature: `mount:switchMount(doorEnclos, Adjacentecell, levelMax)` Paramètres: Nom Type Description `doorEnclos` `number` Cellule de la porte `Adjacentecell` `number` Cellule adjacente `levelMax` `number` Niveau max de la monture Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#toggleriding) toggleRiding Monte ou descend de la monture. Signature: `mount:toggleRiding()` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/mount#updatecertificate) UpdateCertificate Met a jour les certificats de monture. Signature: `mount:UpdateCertificate()` Exemple: * * * [Précédentinventorychevron-left](https://docs.snowbot.eu/methodes/personnage/inventory) [Suivantjobchevron-right](https://docs.snowbot.eu/methodes/personnage/job) Mis à jour il y a 2 mois * [addPaddockItem](https://docs.snowbot.eu/methodes/personnage/mount#addpaddockitem) * [DeleteMountList](https://docs.snowbot.eu/methodes/personnage/mount#deletemountlist) * [feedMount](https://docs.snowbot.eu/methodes/personnage/mount#feedmount) * [getEnergy](https://docs.snowbot.eu/methodes/personnage/mount#getenergy) * [getMaxEnergy](https://docs.snowbot.eu/methodes/personnage/mount#getmaxenergy) * [getPaddockInformations](https://docs.snowbot.eu/methodes/personnage/mount#getpaddockinformations) * [hasMount](https://docs.snowbot.eu/methodes/personnage/mount#hasmount) * [id](https://docs.snowbot.eu/methodes/personnage/mount#id) * [inventoryMounts](https://docs.snowbot.eu/methodes/personnage/mount#inventorymounts) * [inventoryMountsData](https://docs.snowbot.eu/methodes/personnage/mount#inventorymountsdata) * [isRideable](https://docs.snowbot.eu/methodes/personnage/mount#isrideable) * [isRiding](https://docs.snowbot.eu/methodes/personnage/mount#isriding) * [level](https://docs.snowbot.eu/methodes/personnage/mount#level) * [maxPods](https://docs.snowbot.eu/methodes/personnage/mount#maxpods) * [mountInformation](https://docs.snowbot.eu/methodes/personnage/mount#mountinformation) * [moveMounts](https://docs.snowbot.eu/methodes/personnage/mount#movemounts) * [movePaddockItem](https://docs.snowbot.eu/methodes/personnage/mount#movepaddockitem) * [myMount](https://docs.snowbot.eu/methodes/personnage/mount#mymount) * [newBorns](https://docs.snowbot.eu/methodes/personnage/mount#newborns) * [paddockedMounts](https://docs.snowbot.eu/methodes/personnage/mount#paddockedmounts) * [putPaddockItem](https://docs.snowbot.eu/methodes/personnage/mount#putpaddockitem) * [removePaddockItem](https://docs.snowbot.eu/methodes/personnage/mount#removepaddockitem) * [RetireMountSet](https://docs.snowbot.eu/methodes/personnage/mount#retiremountset) * [setXpRatio](https://docs.snowbot.eu/methodes/personnage/mount#setxpratio) * [stabledMounts](https://docs.snowbot.eu/methodes/personnage/mount#stabledmounts) * [switchMount](https://docs.snowbot.eu/methodes/personnage/mount#switchmount) * [toggleRiding](https://docs.snowbot.eu/methodes/personnage/mount#toggleriding) * [UpdateCertificate](https://docs.snowbot.eu/methodes/personnage/mount#updatecertificate) Copier mount:feedMount(289, 10) -- Donner 10 unites de nourriture Copier local energy = mount:getEnergy() print("Energie: " .. energy) Copier local maxEnergy = mount:getMaxEnergy() Copier local paddock = mount:getPaddockInformations() Copier if mount:hasMount() then print("J'ai une monture!") end Copier local mountId = mount:id() Copier local mounts = mount:inventoryMounts() print("Montures en inventaire: " .. #mounts) Copier local data = mount:inventoryMountsData() Copier if mount:isRideable() then mount:toggleRiding() end Copier if mount:isRiding() then print("Je suis sur ma monture") end Copier local level = mount:level() print("Niveau monture: " .. level) Copier local pods = mount:maxPods() Copier mount:mountInformation(123456, 5000) Copier mount:moveMounts({123, 456}, 1) Copier mount:movePaddockItem(100, 200) Copier local myMount = mount:myMount() print("Monture: " .. myMount.name) Copier local babies = mount:newBorns() Copier local mounts = mount:paddockedMounts() Copier mount:putPaddockItem(123456, 256) Copier mount:removePaddockItem(256) Copier mount:RetireMountSet() Copier mount:setXpRatio(50) -- 50% de l'XP va a la monture Copier local mounts = mount:stabledMounts() print("Montures en etable: " .. #mounts) Copier mount:switchMount(256, 257, 100) Copier mount:toggleRiding() Copier mount:UpdateCertificate() --- # inventory | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#deleteitem) deleteItem Supprime définitivement un objet de l'inventaire. Recherche l'objet par son GID dans les items non équipés (position 63), puis envoie le paquet 3022 au serveur. Attend la confirmation via ObjectDeletedMessage ou ObjectQuantityMessage. Affiche un message d'erreur si l'objet ne peut pas être détruit. Signature: `inventory:deleteItem(ObjectID, Qte)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet à supprimer `Qte` `number` Quantité à supprimer Retourne: `boolean` - true si la suppression a réussi, false sinon Exemple: Copier -- Supprimer 10 bles de l'inventaire local success = inventory:deleteItem(289, 10) if success then global:printSuccess("10 bles supprimes") else global:printError("Echec de la suppression") end -- Supprimer tout un stack local count = inventory:itemCount(289) if count > 0 then inventory:deleteItem(289, count) end Note: Action IRREVERSIBLE! Seuls les items non équipés (position 63) peuvent être supprimés. Timeout de 2 secondes. * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#destuff) destuff Retire TOUS les équipements du personnage en les déplaçant vers l'inventaire (position 63). Parcourt tous les items de v\_ItemsList dont la position est <= 15 (emplacements d'équipement) et envoie ObjectSetPositionMessage pour chacun. Signature: `inventory:destuff(delay)` Paramètres: Nom Type Description `delay` `number` Délai en ms entre chaque déséquipement (défaut: 500ms) Retourne: `boolean` - true si l'opération a réussi, false si aucun item Exemple: Note: Utile avant un échange d'équipement complet ou pour ranger en banque. * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#dropitem) dropItem Jette un objet au sol sur la carte actuelle. Recherche l'objet par son GID parmi les items non équipés (position 63), puis envoie DropObjectMessage. Attend la confirmation via le paquet 3017 avec un timeout de 2 secondes. Signature: `inventory:dropItem(ObjectID, Qte)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet à jeter `Qte` `number` Quantité à jeter Retourne: `boolean` - true si réussi, false sinon Exemple: Note: Les objets jetés restent au sol et peuvent être ramassés par n'importe qui. Message d'erreur affiché si échec. * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#equipitem) equipItem Équipe un objet à une position spécifique. Recherche l'objet par son GID dans l'inventaire, puis envoie ObjectSetPositionMessage avec l'UID et la position cible. Attend la confirmation du serveur (paquet 176). Signature: `inventory:equipItem(ObjectID, position)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet à équiper `position` `number` Position d'équipement (voir notes) Retourne: `boolean` - true si l'équipement a réussi Exemple: Note: Positions d'équipement: 0 = Amulette 1 = Arme 2 = Anneau (gauche) 3 = Ceinture 4 = Anneau (droite) 5 = Bottes 6 = Coiffe/Chapeau 7 = Cape 8 = Familier/Montilier 9-14 = Dofus/Trophées (emplacements 1 à 6) 15 = Bouclier 63 = Inventaire (non équipé) * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#equipitemuid) equipItemuid Équipe un objet en utilisant directement son UID unique (au lieu du GID). Utile quand on a plusieurs exemplaires du même objet avec des stats différentes. Envoie ObjectSetPositionMessage avec l'UID spécifié. Signature: `inventory:equipItemuid(uid, position)` Paramètres: Nom Type Description `uid` `number` UID unique de l'objet spécifique `position` `number` Position d'équipement (0-15) Retourne: `boolean` - true si réussi Exemple: Note: Préférer cette fonction quand vous avez plusieurs items identiques avec des jets différents. * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#getaverageprice) getAveragePrice Retourne le prix moyen d'un objet tel que stocké dans le cache de prix (prixMoyenCache). Ce cache est alimenté par les données de l'hôtel des ventes. Retourne 0 si l'objet n'est pas dans le cache. Signature: `inventory:getAveragePrice(gid)` Paramètres: Nom Type Description `gid` `number` GID de l'objet Retourne: `number` - Prix moyen en kamas (Long), ou 0 si inconnu Exemple: Note: Le cache doit être alimenté par une visite à l'HDV ou un chargement préalable. * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#getgid) getGID Convertit un UID (identifiant unique d'un item spécifique) en GID (identifiant général du type d'item). Parcourt l'inventaire pour trouver la correspondance entre inventoryitem2 (UIDs) et inventoryitem (GIDs). Signature: `inventory:getGID(objectID)` Paramètres: Nom Type Description `objectID` `number` UID de l'objet Retourne: `number` - GID de l'objet, ou -1 si non trouvé Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#getlevel) getLevel Retourne le niveau requis pour utiliser/équiper un objet. Interroge les données D2O (Items) pour obtenir le champ "level". Retourne -1 en cas d'erreur. Signature: `inventory:getLevel(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet Retourne: `number` - Niveau requis, ou -1 si erreur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#gettypename) getTypeName Retourne le nom du type d'objet (catégorie) en utilisant les données D2O. Récupère d'abord le typeId de l'item, puis traduit le nameId du type via I18n. Signature: `inventory:getTypeName(objectGID)` Paramètres: Nom Type Description `objectGID` `number` GID de l'objet Retourne: `string` - Nom du type (ex: "Epee", "Amulette", "Ressource"), ou "" si erreur Exemple: Note: Types reconnus par stuff(): Amulette, Anneau, Bottes, Ceinture, Cape, Chapeau, Bouclier, Familier, Montilier, Hache, Epee, Dague, Pelle, Baguette, Baton, Marteau, Trophee, Dofus * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#getuid) getUID Retourne l'UID (identifiant unique) d'un objet à partir de son GID. Parcourt les listes inventoryitem (GIDs) et inventoryitem2 (UIDs) pour trouver la correspondance. Retourne le premier UID trouvé. Signature: `inventory:getUID(objectID)` Paramètres: Nom Type Description `objectID` `number` GID de l'objet Retourne: `number` - UID de l'objet, ou -1 si non trouvé Exemple: Note: Si plusieurs items du même GID existent, retourne le premier trouvé. * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#inventorycontent) inventoryContent Retourne une copie complète de la liste des objets dans l'inventaire (v\_ItemsList). Chaque objet est de type ObjectItem avec les propriétés: objectGID, objectUID, quantity, position, effects, etc. Signature: `inventory:inventoryContent()` Retourne: `table` - Liste d'ObjectItem (copie sécurisée) Exemple: Note: Retourne une copie pour éviter les problèmes de concurrence. * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#itemcount) itemCount Compte le nombre total d'unités d'un objet spécifique dans l'inventaire. Parcourt toutes les listes et additionne les quantités de tous les stacks du même GID (peut y avoir plusieurs stacks si l'objet est stackable mais a des effects différents). Signature: `inventory:itemCount(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet Retourne: `number` - Quantité totale possédée Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#itemlevelid) itemLevelId Alias de getLevel(). Retourne le niveau requis d'un objet depuis les données D2O (Items.level). Signature: `inventory:itemLevelId(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet Retourne: `number` - Niveau de l'objet Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#itemnameid) itemNameId Retourne le nom traduit d'un objet. Récupère le nameId depuis les données D2O (Items), puis utilise I18n.GetText() pour obtenir la traduction dans la langue du client. Signature: `inventory:itemNameId(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet Retourne: `string` - Nom de l'objet dans la langue du jeu Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#itemposition) itemPosition Retourne la position d'équipement d'un objet. Parcourt les listes inventoryitem et inventorypostion pour trouver où l'objet est équipé. Retourne -1 si l'objet n'est pas dans l'inventaire. Signature: `inventory:itemPosition(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet Retourne: `number` - Position (0-15 si équipé, 63 si dans inventaire, -1 si absent) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#itemtypeid) itemTypeId Retourne l'ID numérique du type d'objet depuis les données D2O (Items.typeId). Retourne -1 en cas d'erreur. Signature: `inventory:itemTypeId(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet Retourne: `number` - ID du type, ou -1 si erreur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#itemweight) itemWeight Retourne le poids unitaire d'un objet (realWeight) depuis les données D2O (Items). C'est le poids d'une unité de l'objet en pods. Signature: `inventory:itemWeight(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet Retourne: `number` - Poids en pods par unité Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#pods) pods Retourne le poids actuel de l'inventaire (poids) en pods. Cette valeur est mise à jour automatiquement par le serveur à chaque modification de l'inventaire. Signature: `inventory:pods()` Retourne: `number` - Pods actuellement utilisés Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#podsmax) podsMax Retourne la capacité maximale de l'inventaire (poidsmax) en pods. Cette valeur dépend de la force du personnage et peut être augmentée par certains équipements. Signature: `inventory:podsMax()` Retourne: `number` - Capacité maximale en pods Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#podsp) podsP Retourne le pourcentage de remplissage de l'inventaire, calculé comme (poids \* 100) / poidsmax. En cas d'erreur (division par zero si poidsmax=0), retourne 100. Signature: `inventory:podsP()` Retourne: `number` - Pourcentage de remplissage (0-100) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#stuff) stuff Équipe automatiquement tous les objets équipables de l'inventaire selon leur type. Parcourt v\_ItemsList et utilise getTypeName() pour déterminer l'emplacement correct. Gère les emplacements multiples (anneaux, trophées) avec des listes de positions disponibles. Signature: `inventory:stuff(delay)` Paramètres: Nom Type Description `delay` `number` Délai en ms entre chaque équipement (défaut: 500ms) Exemple: Note: Types gérés et positions: * Amulette -> position 0 * Anneau -> positions 2 puis 4 * Bottes -> position 5 * Ceinture -> position 3 * Cape -> position 7 * Chapeau -> position 6 * Bouclier -> position 15 * Familier/Montilier -> position 8 * Armes (Hache, Epee, Dague, Pelle, Baguette, Baton, Marteau) -> position 1 * Trophée/Dofus -> positions 9, 10, 11, 12, 13, 14 * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#useitem) useItem Utilise un objet consommable de l'inventaire (potions, parchemins, etc.). Recherche l'objet par son GID, récupère son UID, puis envoie ObjectUseMessage. Attend la confirmation du serveur (paquet 176). Signature: `inventory:useItem(ObjectID)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet à utiliser Retourne: `boolean` - true si l'objet a été utilisé, false si non trouvé Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/personnage/inventory#usemultipleitem) useMultipleItem Utilise plusieurs unités d'un même objet en une seule action. Recherche l'objet par GID, puis envoie ObjectUseMultipleMessage avec la quantité spécifiée. Utile pour ouvrir plusieurs coffres ou utiliser plusieurs ressources d'un coup. Signature: `inventory:useMultipleItem(ObjectID, quantity)` Paramètres: Nom Type Description `ObjectID` `number` GID de l'objet `quantity` `number` Nombre d'unités à utiliser Retourne: `boolean` - true si réussi, false si objet non trouvé Exemple: * * * [Précédentcharacterchevron-left](https://docs.snowbot.eu/methodes/personnage/character) [Suivantmountchevron-right](https://docs.snowbot.eu/methodes/personnage/mount) Mis à jour il y a 2 mois * [deleteItem](https://docs.snowbot.eu/methodes/personnage/inventory#deleteitem) * [destuff](https://docs.snowbot.eu/methodes/personnage/inventory#destuff) * [dropItem](https://docs.snowbot.eu/methodes/personnage/inventory#dropitem) * [equipItem](https://docs.snowbot.eu/methodes/personnage/inventory#equipitem) * [equipItemuid](https://docs.snowbot.eu/methodes/personnage/inventory#equipitemuid) * [getAveragePrice](https://docs.snowbot.eu/methodes/personnage/inventory#getaverageprice) * [getGID](https://docs.snowbot.eu/methodes/personnage/inventory#getgid) * [getLevel](https://docs.snowbot.eu/methodes/personnage/inventory#getlevel) * [getTypeName](https://docs.snowbot.eu/methodes/personnage/inventory#gettypename) * [getUID](https://docs.snowbot.eu/methodes/personnage/inventory#getuid) * [inventoryContent](https://docs.snowbot.eu/methodes/personnage/inventory#inventorycontent) * [itemCount](https://docs.snowbot.eu/methodes/personnage/inventory#itemcount) * [itemLevelId](https://docs.snowbot.eu/methodes/personnage/inventory#itemlevelid) * [itemNameId](https://docs.snowbot.eu/methodes/personnage/inventory#itemnameid) * [itemPosition](https://docs.snowbot.eu/methodes/personnage/inventory#itemposition) * [itemTypeId](https://docs.snowbot.eu/methodes/personnage/inventory#itemtypeid) * [itemWeight](https://docs.snowbot.eu/methodes/personnage/inventory#itemweight) * [pods](https://docs.snowbot.eu/methodes/personnage/inventory#pods) * [podsMax](https://docs.snowbot.eu/methodes/personnage/inventory#podsmax) * [podsP](https://docs.snowbot.eu/methodes/personnage/inventory#podsp) * [stuff](https://docs.snowbot.eu/methodes/personnage/inventory#stuff) * [useItem](https://docs.snowbot.eu/methodes/personnage/inventory#useitem) * [useMultipleItem](https://docs.snowbot.eu/methodes/personnage/inventory#usemultipleitem) Copier -- Retirer tout l'equipement if inventory:destuff(500) then global:printSuccess("Equipement retire!") else global:printMessage("Aucun equipement a retirer") end -- Destuff rapide avant echange inventory:destuff(200) Copier -- Jeter 5 potions au sol if inventory:dropItem(289, 5) then global:printSuccess("Objets jetes!") else global:printError("Impossible de jeter l'objet") end Copier -- Equiper une amulette inventory:equipItem(12345, 0) -- Equiper une arme inventory:equipItem(67890, 1) -- Equiper une cape inventory:equipItem(11111, 7) Copier -- Recuperer l'UID d'un objet specifique local uid = inventory:getUID(12345) -- Equiper cet objet precis if uid ~= -1 then inventory:equipItemuid(uid, 1) -- Equiper en arme end Copier local bleGid = 289 local price = inventory:getAveragePrice(bleGid) if price > 0 then local count = inventory:itemCount(bleGid) local totalValue = price * count global:printMessage("Valeur du ble: " .. totalValue .. " kamas") else global:printMessage("Prix inconnu") end Copier -- A partir d'un UID, retrouver le type d'objet local uid = 987654321 local gid = inventory:getGID(uid) if gid ~= -1 then local name = inventory:itemNameId(gid) global:printMessage("Objet: " .. name) end Copier local itemGid = 12345 local level = inventory:getLevel(itemGid) if level <= character:level() then global:printSuccess("Peut equiper cet objet (niveau " .. level .. ")") else global:printError("Niveau insuffisant (requiert " .. level .. ")") end Copier local typeName = inventory:getTypeName(12345) global:printMessage("Type: " .. typeName) -- Utilise par stuff() pour determiner l'emplacement if typeName == "Amulette" then inventory:equipItem(12345, 0) elseif typeName == "Chapeau" then inventory:equipItem(12345, 6) end Copier local gid = 289 -- Ble local uid = inventory:getUID(gid) if uid ~= -1 then global:printMessage("UID du ble: " .. uid) else global:printMessage("Pas de ble dans l'inventaire") end Copier local items = inventory:inventoryContent() global:printMessage("Objets dans l'inventaire: " .. #items) for _, item in ipairs(items) do local name = inventory:itemNameId(item.objectGID) global:printMessage(name .. " x" .. item.quantity .. " (pos:" .. item.position .. ")") end -- Calculer la valeur totale local totalValue = 0 for _, item in ipairs(items) do local price = inventory:getAveragePrice(item.objectGID) totalValue = totalValue + (price * item.quantity) end global:printMessage("Valeur totale: " .. totalValue .. " kamas") Copier local bleCount = inventory:itemCount(289) global:printMessage("Ble en inventaire: " .. bleCount) -- Verifier si assez de potions local potionId = 548 -- Potion de soin if inventory:itemCount(potionId) < 10 then global:printError("Moins de 10 potions! Aller en acheter.") end Copier local level = inventory:itemLevelId(12345) global:printMessage("Niveau requis: " .. level) Copier local name = inventory:itemNameId(289) global:printMessage("Objet: " .. name) -- "Ble" -- Afficher tout l'inventaire avec les noms local items = inventory:inventoryContent() for _, item in ipairs(items) do local name = inventory:itemNameId(item.objectGID) global:printMessage(name .. " x" .. item.quantity) end Copier local pos = inventory:itemPosition(12345) if pos == -1 then global:printMessage("Objet non possede") elseif pos == 63 then global:printMessage("Dans l'inventaire (non equipe)") else global:printMessage("Equipe en position " .. pos) end Copier local typeId = inventory:itemTypeId(12345) global:printMessage("Type ID: " .. typeId) -- Les types communs: -- 1 = Amulette, 2 = Arc, 3 = Baguette, 4 = Baton, etc. Copier local bleWeight = inventory:itemWeight(289) local bleCount = inventory:itemCount(289) local totalWeight = bleWeight * bleCount global:printMessage("Poids du ble: " .. totalWeight .. " pods") Copier local currentPods = inventory:pods() local maxPods = inventory:podsMax() global:printMessage("Inventaire: " .. currentPods .. "/" .. maxPods .. " pods") Copier local maxPods = inventory:podsMax() global:printMessage("Capacite max: " .. maxPods .. " pods") Copier local percent = inventory:podsP() global:printMessage("Remplissage: " .. percent .. "%") -- Aller en banque si presque plein if percent > 90 then global:printError("Inventaire presque plein! Direction banque.") return "bank" end -- Condition pour continuer a farmer if percent < 80 then map:gather() end Copier -- Equiper tout l'equipement disponible inventory:stuff(500) global:printSuccess("Equipement termine!") -- Equipement rapide inventory:stuff(200) Copier -- Utiliser une potion de soin local potionId = 548 if inventory:useItem(potionId) then global:printSuccess("Potion utilisee!") else global:printError("Potion non trouvee") end -- Utiliser un pain pour regenerer local painId = 469 if inventory:itemCount(painId) > 0 then inventory:useItem(painId) end Copier -- Ouvrir 10 coffres d'un coup local coffreId = 12345 local count = inventory:itemCount(coffreId) if count >= 10 then inventory:useMultipleItem(coffreId, 10) global:printSuccess("10 coffres ouverts!") end -- Utiliser tous les parchemins de XP local scrollId = 67890 local scrollCount = inventory:itemCount(scrollId) if scrollCount > 0 then inventory:useMultipleItem(scrollId, scrollCount) end --- # developer | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#cancelmessagetoclient) cancelMessageToClient 🎮Méthode Copier developer:cancelMessageToClient(identifier) Annule l'envoi d'un message au client. Paramètres: Nom Type Description `identifier` `string` Identifiant du message Exemple: example.lua Copier developer:cancelMessageToClient("ChatServerMessage") * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#createmessage) createMessage 🎮Méthode Copier developer:createMessage(identifier) Cree un nouveau message reseau. Paramètres: Nom Type Description `identifier` `string` Identifiant du message Retourne: `object` - Message reseau Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#dofusrequest) dofusRequest 🎮Méthode Effectue une requete vers l'API Dofus. Paramètres: Nom Type Description `method` `string` Methode HTTP (GET, POST) `url` `string` URL de l'API `apiKey` `string` Cle API `data` `string` Donnees a envoyer Retourne: `string` - Reponse de l'API Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#getidentifierbyname) getIdentifierByName 🎮Méthode Retourne l'identifiant d'un message par son nom. Paramètres: Nom Type Description `name` `string` Nom du message Retourne: `string` - Identifiant du message Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#getnamebyidentifier) getNameByIdentifier 🎮Méthode Retourne le nom d'un message par son identifiant. Paramètres: Nom Type Description `identifier` `string` Identifiant du message Retourne: `string` - Nom du message Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#getrequest) getRequest 🎮Méthode Effectue une requete HTTP GET. Paramètres: Nom Type Description `url` `string` URL cible `headersName` `table` Noms des headers `headersContent` `table` Valeurs des headers `proxie` `string` Adresse du proxy `proxieHttp` `boolean` Utiliser HTTP pour le proxy Retourne: `object` - Reponse HTTP Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#getrequest2) getRequest2 🎮Méthode Effectue une requete HTTP GET simplifiee. Paramètres: Nom Type Description `url` `string` URL cible `headersName` `table` Noms des headers `headersContent` `table` Valeurs des headers Retourne: `object` - Reponse HTTP Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#getrequestwithdelay) getRequestWithDelay 🎮Méthode Effectue une requete GET avec timeout. Paramètres: Nom Type Description `url` `string` URL cible `timeoutMilliseconds` `number` Timeout en ms Retourne: `string` - Reponse Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#hasscript) hasScript 🎮Méthode Verifie si un script est charge. Retourne: `object` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#historicalmessage) historicalMessage 🎮Méthode Retourne l'historique d'un type de message. Paramètres: Nom Type Description `identifier` `string` Identifiant du message Retourne: `table` - Historique des messages Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#historicalmessagedofus3) historicalMessageDofus3 🎮Méthode Retourne l'historique des messages Dofus 3. Paramètres: Nom Type Description `identifier` `string` Identifiant du message Retourne: `table` - Historique des messages Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#isscriptplaying) isScriptPlaying 🎮Méthode Verifie si un script est en cours d'execution. Retourne: `boolean` - true si un script tourne Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#listenpackets) listenPackets 🎮Méthode Active l'ecoute des paquets reseau. Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#postrequest) postRequest 🎮Méthode Effectue une requete HTTP POST. Paramètres: Nom Type Description `url` `string` URL cible `data` `string` Donnees a envoyer `headersName` `table` Noms des headers `headersContent` `table` Valeurs des headers `proxie` `string` Adresse du proxy `proxieHttp` `boolean` Utiliser HTTP pour le proxy Retourne: `object` - Reponse HTTP Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#registermessage) registerMessage 🎮Méthode Enregistre un callback pour un type de message. Paramètres: Nom Type Description `identifier` `string` Identifiant du message `function` `function` Fonction callback Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#sendmessage) sendMessage 🎮Méthode Envoie un message reseau. Paramètres: Nom Type Description `message` `object` Message a envoyer `targetClient` `string` Cible (server/client) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#startscript) startScript 🎮Méthode Demarre le script. Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#suspendscriptuntil) suspendScriptUntil 🎮Méthode Suspend le script jusqu'a reception d'un message. Paramètres: Nom Type Description `identifier` `string` Identifiant du message attendu `timeOut` `number` Timeout en ms `showTimeOut` `boolean` Afficher le timeout `bypassLimit` `boolean` Ignorer les limites `listenPackets` `boolean` Ecouter les paquets Retourne: `object` - Message recu Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#suspendscriptuntilmultiplepackets) suspendScriptUntilMultiplePackets 🎮Méthode Suspend le script jusqu'a reception de plusieurs messages. Paramètres: Nom Type Description `identifier` table Liste des identifiants `timeOut` `number` Timeout en ms `showTimeOut` `boolean` Afficher le timeout `bypassLimit` `boolean` Ignorer les limites `listenPackets` `boolean` Ecouter les paquets Retourne: `object` - Message recu Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#togglemultithreading) toggleMultiThreading 🎮Méthode Active ou desactive le multi-threading. Paramètres: `value` boolean true pour activer Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#typeoff) typeoff 🎮Méthode Active ou desactive le multi-threading. Paramètres: `object` any Objet a analyser Retourne : string Type de l'objet Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#uncancelmessagetoclient) unCancelMessageToClient 🎮Méthode Annule le blocage d'un message. Paramètres: `identifier` string Identifiant du message Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/developer#unregistermessage) unRegisterMessage 🎮Méthode Desenregistre un callback de message Paramètres: `identifier`stringIdentifiant du message Exemple: [Précédentd2datachevron-left](https://docs.snowbot.eu/methodes/systeme/d2data) [SuivantContrôlechevron-right](https://docs.snowbot.eu/methodes/controle) Mis à jour il y a 2 mois * [cancelMessageToClient](https://docs.snowbot.eu/methodes/systeme/developer#cancelmessagetoclient) * [createMessage](https://docs.snowbot.eu/methodes/systeme/developer#createmessage) * [dofusRequest](https://docs.snowbot.eu/methodes/systeme/developer#dofusrequest) * [getIdentifierByName](https://docs.snowbot.eu/methodes/systeme/developer#getidentifierbyname) * [getNameByIdentifier](https://docs.snowbot.eu/methodes/systeme/developer#getnamebyidentifier) * [getRequest](https://docs.snowbot.eu/methodes/systeme/developer#getrequest) * [getRequest2](https://docs.snowbot.eu/methodes/systeme/developer#getrequest2) * [getRequestWithDelay](https://docs.snowbot.eu/methodes/systeme/developer#getrequestwithdelay) * [hasScript](https://docs.snowbot.eu/methodes/systeme/developer#hasscript) * [historicalMessage](https://docs.snowbot.eu/methodes/systeme/developer#historicalmessage) * [historicalMessageDofus3](https://docs.snowbot.eu/methodes/systeme/developer#historicalmessagedofus3) * [isScriptPlaying](https://docs.snowbot.eu/methodes/systeme/developer#isscriptplaying) * [listenPackets](https://docs.snowbot.eu/methodes/systeme/developer#listenpackets) * [postRequest](https://docs.snowbot.eu/methodes/systeme/developer#postrequest) * [registerMessage](https://docs.snowbot.eu/methodes/systeme/developer#registermessage) * [sendMessage](https://docs.snowbot.eu/methodes/systeme/developer#sendmessage) * [startScript](https://docs.snowbot.eu/methodes/systeme/developer#startscript) * [suspendScriptUntil](https://docs.snowbot.eu/methodes/systeme/developer#suspendscriptuntil) * [suspendScriptUntilMultiplePackets](https://docs.snowbot.eu/methodes/systeme/developer#suspendscriptuntilmultiplepackets) * [toggleMultiThreading](https://docs.snowbot.eu/methodes/systeme/developer#togglemultithreading) * [typeoff](https://docs.snowbot.eu/methodes/systeme/developer#typeoff) * [unCancelMessageToClient](https://docs.snowbot.eu/methodes/systeme/developer#uncancelmessagetoclient) * [unRegisterMessage](https://docs.snowbot.eu/methodes/systeme/developer#unregistermessage) example.lua Copier local msg = developer:createMessage("ChatClientMessage") msg.content = "Hello!" developer:sendMessage(msg, "server") Copier developer:dofusRequest(method, url, apiKey, data) example.lua Copier local response = developer:dofusRequest("GET", "/api/data", "key", "") Copier developer:getIdentifierByName(name) example.lua Copier local id = developer:getIdentifierByName("ChatServerMessage") Copier developer:getNameByIdentifier(identifier) example.lua Copier local name = developer:getNameByIdentifier("12345") Copier developer:getRequest(url, headersName, headersContent, proxie, proxieHttp) example.lua Copier local response = developer:getRequest( "https://api.example.com/data", {"Authorization"}, {"Bearer token"}, "", false ) Copier developer:getRequest2(url, headersName, headersContent) example.lua Copier local response = developer:getRequest2( "https://api.example.com/data", {}, {} ) Copier developer:getRequestWithDelay(url, timeoutMilliseconds) example.lua Copier local response = developer:getRequestWithDelay("https://api.example.com", 5000) Copier developer:hasScript() example.lua Copier if developer:hasScript() then print("Script charge") end Copier developer:historicalMessage(identifier) example.lua Copier local history = developer:historicalMessage("ChatServerMessage") Copier developer:historicalMessageDofus3(identifier) example.lua Copier local history = developer:historicalMessageDofus3("ChatServerMessage") Copier developer:isScriptPlaying() example.lua Copier if developer:isScriptPlaying() then print("Script en cours") end Copier developer:listenPackets() example.lua Copier developer:listenPackets() Copier developer:postRequest(url, data, headersName, headersContent, proxie, proxieHttp) example.lua Copier local response = developer:postRequest( "https://api.example.com/data", '{"key": "value"}', {"Content-Type"}, {"application/json"}, "", false ) Copier developer:registerMessage(identifier, function) example.lua Copier developer:registerMessage("ChatServerMessage", function(msg) print("Message recu: " .. msg.content) end) Copier developer:sendMessage(message, targetClient) example.lua Copier developer:sendMessage(myMessage, "server") Copier developer:startScript() example.lua Copier developer:startScript() Copier developer:suspendScriptUntil(identifier, timeOut, showTimeOut, bypassLimit, listenPackets) Copier local msg = developer:suspendScriptUntil("MapComplementaryInformations", 10000, true, false, true) Copier developer:suspendScriptUntilMultiplePackets(identifier, timeOut, showTimeOut, bypassLimit, listenPackets) Copier local msgs = developer:suspendScriptUntilMultiplePackets({"Msg1", "Msg2"}, 10000, true, false, true) Copier developer:toggleMultiThreading(value) Copier developer:toggleMultiThreading(true) Copier developer:typeoff(object) Copier local type = developer:typeoff(myVar) print("Type: " .. type) Copier developer:typeoff(object) Copier developer:unCancelMessageToClient("ChatServerMessage") Copier developer:unRegisterMessage(identifier) Copier developer:unRegisterMessage("ChatServerMessage") --- # accountController | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#callfunctioninscript) callFunctionInScript Appelle une fonction definie dans le script. **Signature:** `accountController:callFunctionInScript(function)` **Paramètres:** Nom Type Description `function` `string` Nom de la fonction **Exemple:** Copier accountController:callFunctionInScript("myCustomFunction") * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#callscriptfunction) callScriptFunction Appelle une fonction du script avec des arguments. **Signature:** `accountController:callScriptFunction(name, arguments)` **Paramètres:** Nom Type Description `name` `string` Nom de la fonction `arguments` `table` Arguments **Retourne:** `object` - Resultat de la fonction **Exemple:** Copier local result = accountController:callScriptFunction("calculate", {10, 20}) * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#character) character Retourne le module character du compte. **Signature:** `accountController:character()` **Retourne:** `Character` - Module character **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#chat) chat Retourne le module chat du compte. **Signature:** `accountController:chat()` **Retourne:** `Chat` - Module chat **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#connect) connect Connecte le compte au serveur. **Signature:** `accountController:connect()` **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#craft) craft Retourne le module craft du compte. **Signature:** `accountController:craft()` **Retourne:** `Craft` - Module craft **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#deletecharacteronconnect) deleteCharacterOnConnect Supprime le personnage a la prochaine connexion. **Signature:** `accountController:deleteCharacterOnConnect()` **Exemple:** triangle-exclamation Action irreversible! * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#developer) developer Retourne le module developer du compte. **Signature:** `accountController:developer()` **Retourne:** `Developer` - Module developer **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#disconnect) disconnect Deconnecte le compte. **Signature:** `accountController:disconnect()` **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#editalias) editAlias Modifie l'alias du compte. **Signature:** `accountController:editAlias(alias)` **Paramètres:** Nom Type Description `alias` `string` Nouvel alias **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#exchange) exchange Retourne le module exchange du compte. **Signature:** `accountController:exchange()` **Retourne:** `ExchangePlug` - Module exchange **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#exchangelisten) exchangeListen Active l'ecoute des echanges. **Signature:** `accountController:exchangeListen(toggle)` **Paramètres:** Nom Type Description `toggle` `boolean` Activer/Desactiver **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#executelua) executeLUA Execute une ligne de code Lua. **Signature:** `accountController:executeLUA(line)` **Paramètres:** Nom Type Description `line` `string` Code Lua **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightaction) fightAction Retourne le module fightAction. **Signature:** `accountController:fightAction()` **Retourne:** `FightAI` - Module fightAction **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightbasic) fightBasic Retourne le module fightBasic. **Signature:** `accountController:fightBasic()` **Retourne:** `BasicAI` - Module fightBasic **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightchallenge) fightChallenge Retourne le module fightChallenge. **Signature:** `accountController:fightChallenge()` **Retourne:** `ChallengeAI` - Module fightChallenge **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightcharacter) fightCharacter Retourne le module fightCharacter. **Signature:** `accountController:fightCharacter()` **Retourne:** `CharacterAI` - Module fightCharacter **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightdebug) fightDebug Retourne le module fightDebug. **Signature:** `accountController:fightDebug()` **Retourne:** `DebugAI` - Module fightDebug **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#forcecreate) forceCreate Force la creation d'un personnage. **Signature:** `accountController:forceCreate(breed, sex, head, colors)` **Paramètres:** Nom Type Description `breed` `number` ID de la classe `sex` `boolean` Sexe `head` `number` ID de la tete `colors` `table` Couleurs **Retourne:** `boolean` - Succes **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#forcedelete) forceDelete Force la suppression du personnage. **Signature:** `accountController:forceDelete()` **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#forceserver) forceServer Force la connexion a un serveur. **Signature:** `accountController:forceServer(server)` **Paramètres:** Nom Type Description `server` `string` Nom du serveur **Retourne:** `boolean` - Succes **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#getalias) getAlias Retourne l'alias du compte. **Signature:** `accountController:getAlias()` **Retourne:** `string` - Alias **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#getid) getId Retourne l'ID du compte. **Signature:** `accountController:getId()` **Retourne:** `number` - ID **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#getscriptvariable) getScriptVariable Recupere une variable du script. **Signature:** `accountController:getScriptVariable(variable)` **Paramètres:** Nom Type Description `variable` `string` Nom de la variable **Retourne:** `object` - Valeur **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#getteamaccounts) getTeamAccounts Retourne les comptes de l'equipe. **Signature:** `accountController:getTeamAccounts()` **Retourne:** `table` - Liste des comptes **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#getteammembers) getTeamMembers Retourne les membres de l'equipe. **Signature:** `accountController:getTeamMembers()` **Retourne:** `table` - Liste des membres **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#getusername) getUsername Retourne le username du compte. **Signature:** `accountController:getUsername()` **Retourne:** `string` - Username **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#global) global Retourne le module global. **Signature:** `accountController:global()` **Retourne:** `Globall` - Module global **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#groupwithcharacters) groupWithCharacters Groupe avec des personnages. **Signature:** `accountController:groupWithCharacters(usernames)` **Paramètres:** Nom Type Description `usernames` `table` Liste des usernames **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#inventory) inventory Retourne le module inventory. **Signature:** `accountController:inventory()` **Retourne:** `Inventory` - Module inventory **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#isaccountconnected) isAccountConnected Verifie si le compte est connecte. **Signature:** `accountController:isAccountConnected()` **Retourne:** `boolean` - Etat de connexion **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#isaccountfullyconnected) isAccountFullyConnected Verifie si le compte est entierement connecte. **Signature:** `accountController:isAccountFullyConnected()` **Retourne:** `boolean` - Etat de connexion **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#isbanned) isBanned Verifie si le compte est banni. **Signature:** `accountController:isBanned()` **Retourne:** `boolean` - Etat de bannissement **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#ischaracterinmyteam) isCharacterInMyTeam Verifie si un personnage est dans l'equipe. **Signature:** `accountController:isCharacterInMyTeam(usernameOrCharacterName)` **Paramètres:** Nom Type Description `usernameOrCharacterName` `string` Nom **Retourne:** `boolean` - Presence dans l'equipe **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#iscontroller) isController Verifie si c'est le controleur principal. **Signature:** `accountController:isController()` **Retourne:** `boolean` - Est controleur **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#isitateam) isItATeam Verifie si le compte fait partie d'une equipe. **Signature:** `accountController:isItATeam()` **Retourne:** `boolean` - Est en equipe **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#isscriptplaying) isScriptPlaying Verifie si un script tourne. **Signature:** `accountController:isScriptPlaying()` **Retourne:** `boolean` - Script actif **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#isteamleader) isTeamLeader Verifie si c'est le chef d'equipe. **Signature:** `accountController:isTeamLeader()` **Retourne:** `boolean` - Est chef **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#job) job Retourne le module job. **Signature:** `accountController:job()` **Retourne:** `Job` - Module job **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadconfig) loadConfig Charge une configuration. **Signature:** `accountController:loadConfig(configPath)` **Paramètres:** Nom Type Description `configPath` `string` Chemin du fichier **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadconfignextconnection) loadConfigNextConnection Charge une config a la prochaine connexion. **Signature:** `accountController:loadConfigNextConnection(configPath, start)` **Paramètres:** Nom Type Description `configPath` `string` Chemin `start` `boolean` Demarrer auto **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadscript) loadScript Charge un script. **Signature:** `accountController:loadScript(scriptPath)` **Paramètres:** Nom Type Description `scriptPath` `string` Chemin du script **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadscriptnextconnection) loadScriptNextConnection Charge un script a la prochaine connexion. **Signature:** `accountController:loadScriptNextConnection(scriptPath, start)` **Paramètres:** Nom Type Description `scriptPath` `string` Chemin `start` `boolean` Demarrer auto **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#map) map Retourne le module map. **Signature:** `accountController:map()` **Retourne:** `MapPlug` - Module map **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#merchant) merchant Retourne le module merchant. **Signature:** `accountController:merchant()` **Retourne:** `Merchant` - Module merchant **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#mount) mount Retourne le module mount. **Signature:** `accountController:mount()` **Retourne:** `Mount` - Module mount **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#npc) npc Retourne le module npc. **Signature:** `accountController:npc()` **Retourne:** `Npc` - Module npc **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#quest) quest Retourne le module quest. **Signature:** `accountController:quest()` **Retourne:** `Quest` - Module quest **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#reloadscript) reloadScript Recharge le script. **Signature:** `accountController:reloadScript()` **Retourne:** `object` **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#sale) sale Retourne le module sale. **Signature:** `accountController:sale()` **Retourne:** `Sale` - Module sale **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#selectcharacter) selectCharacter Selectionne un personnage. **Signature:** `accountController:selectCharacter(name)` **Paramètres:** Nom Type Description `name` `string` Nom du personnage **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#selectserver) selectServer Selectionne un serveur. **Signature:** `accountController:selectServer(server)` **Paramètres:** Nom Type Description `server` `string` Nom du serveur **Retourne:** `boolean` - Succes **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#setscriptvariable) setScriptVariable Definit une variable du script. **Signature:** `accountController:setScriptVariable(variable, value)` **Paramètres:** Nom Type Description `variable` `string` Nom `value` `any` Valeur **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#startscript) startScript Demarre le script. **Signature:** `accountController:startScript()` **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#stopscript) stopScript Arrete le script. **Signature:** `accountController:stopScript()` **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#ungroupcharacters) ungroupCharacters Retire des personnages du groupe. **Signature:** `accountController:ungroupCharacters(usernames)` **Paramètres:** Nom Type Description `usernames` `table` Liste **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/accountcontroller#unloadaccount) unloadAccount Decharge le compte. **Signature:** `accountController:unloadAccount()` **Exemple:** * * * [PrécédentContrôlechevron-left](https://docs.snowbot.eu/methodes/controle) [SuivantsnowbotControllerchevron-right](https://docs.snowbot.eu/methodes/controle/snowbotcontroller) Mis à jour il y a 2 mois * [callFunctionInScript](https://docs.snowbot.eu/methodes/controle/accountcontroller#callfunctioninscript) * [callScriptFunction](https://docs.snowbot.eu/methodes/controle/accountcontroller#callscriptfunction) * [character](https://docs.snowbot.eu/methodes/controle/accountcontroller#character) * [chat](https://docs.snowbot.eu/methodes/controle/accountcontroller#chat) * [connect](https://docs.snowbot.eu/methodes/controle/accountcontroller#connect) * [craft](https://docs.snowbot.eu/methodes/controle/accountcontroller#craft) * [deleteCharacterOnConnect](https://docs.snowbot.eu/methodes/controle/accountcontroller#deletecharacteronconnect) * [developer](https://docs.snowbot.eu/methodes/controle/accountcontroller#developer) * [disconnect](https://docs.snowbot.eu/methodes/controle/accountcontroller#disconnect) * [editAlias](https://docs.snowbot.eu/methodes/controle/accountcontroller#editalias) * [exchange](https://docs.snowbot.eu/methodes/controle/accountcontroller#exchange) * [exchangeListen](https://docs.snowbot.eu/methodes/controle/accountcontroller#exchangelisten) * [executeLUA](https://docs.snowbot.eu/methodes/controle/accountcontroller#executelua) * [fightAction](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightaction) * [fightBasic](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightbasic) * [fightChallenge](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightchallenge) * [fightCharacter](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightcharacter) * [fightDebug](https://docs.snowbot.eu/methodes/controle/accountcontroller#fightdebug) * [forceCreate](https://docs.snowbot.eu/methodes/controle/accountcontroller#forcecreate) * [forceDelete](https://docs.snowbot.eu/methodes/controle/accountcontroller#forcedelete) * [forceServer](https://docs.snowbot.eu/methodes/controle/accountcontroller#forceserver) * [getAlias](https://docs.snowbot.eu/methodes/controle/accountcontroller#getalias) * [getId](https://docs.snowbot.eu/methodes/controle/accountcontroller#getid) * [getScriptVariable](https://docs.snowbot.eu/methodes/controle/accountcontroller#getscriptvariable) * [getTeamAccounts](https://docs.snowbot.eu/methodes/controle/accountcontroller#getteamaccounts) * [getTeamMembers](https://docs.snowbot.eu/methodes/controle/accountcontroller#getteammembers) * [getUsername](https://docs.snowbot.eu/methodes/controle/accountcontroller#getusername) * [global](https://docs.snowbot.eu/methodes/controle/accountcontroller#global) * [groupWithCharacters](https://docs.snowbot.eu/methodes/controle/accountcontroller#groupwithcharacters) * [inventory](https://docs.snowbot.eu/methodes/controle/accountcontroller#inventory) * [isAccountConnected](https://docs.snowbot.eu/methodes/controle/accountcontroller#isaccountconnected) * [isAccountFullyConnected](https://docs.snowbot.eu/methodes/controle/accountcontroller#isaccountfullyconnected) * [isBanned](https://docs.snowbot.eu/methodes/controle/accountcontroller#isbanned) * [isCharacterInMyTeam](https://docs.snowbot.eu/methodes/controle/accountcontroller#ischaracterinmyteam) * [isController](https://docs.snowbot.eu/methodes/controle/accountcontroller#iscontroller) * [isItATeam](https://docs.snowbot.eu/methodes/controle/accountcontroller#isitateam) * [isScriptPlaying](https://docs.snowbot.eu/methodes/controle/accountcontroller#isscriptplaying) * [isTeamLeader](https://docs.snowbot.eu/methodes/controle/accountcontroller#isteamleader) * [job](https://docs.snowbot.eu/methodes/controle/accountcontroller#job) * [loadConfig](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadconfig) * [loadConfigNextConnection](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadconfignextconnection) * [loadScript](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadscript) * [loadScriptNextConnection](https://docs.snowbot.eu/methodes/controle/accountcontroller#loadscriptnextconnection) * [map](https://docs.snowbot.eu/methodes/controle/accountcontroller#map) * [merchant](https://docs.snowbot.eu/methodes/controle/accountcontroller#merchant) * [mount](https://docs.snowbot.eu/methodes/controle/accountcontroller#mount) * [npc](https://docs.snowbot.eu/methodes/controle/accountcontroller#npc) * [quest](https://docs.snowbot.eu/methodes/controle/accountcontroller#quest) * [reloadScript](https://docs.snowbot.eu/methodes/controle/accountcontroller#reloadscript) * [sale](https://docs.snowbot.eu/methodes/controle/accountcontroller#sale) * [selectCharacter](https://docs.snowbot.eu/methodes/controle/accountcontroller#selectcharacter) * [selectServer](https://docs.snowbot.eu/methodes/controle/accountcontroller#selectserver) * [setScriptVariable](https://docs.snowbot.eu/methodes/controle/accountcontroller#setscriptvariable) * [startScript](https://docs.snowbot.eu/methodes/controle/accountcontroller#startscript) * [stopScript](https://docs.snowbot.eu/methodes/controle/accountcontroller#stopscript) * [ungroupCharacters](https://docs.snowbot.eu/methodes/controle/accountcontroller#ungroupcharacters) * [unloadAccount](https://docs.snowbot.eu/methodes/controle/accountcontroller#unloadaccount) Copier local char = accountController:character() print(char:name()) Copier accountController:chat():sendGuildMessage("Hello!") Copier accountController:connect() Copier accountController:craft():Ready() Copier accountController:deleteCharacterOnConnect() Copier accountController:developer():listenPackets() Copier accountController:disconnect() Copier accountController:editAlias("MonNouvelAlias") Copier accountController:exchange():putAllItems() Copier accountController:exchangeListen(true) Copier accountController:executeLUA("print('Hello!')") Copier accountController:fightAction():passTurn() Copier accountController:fightBasic():playTurn("aggressive") Copier local challenges = accountController:fightChallenge():getChallengeIds() Copier local ap = accountController:fightCharacter():getAP() Copier accountController:fightDebug():print("Debug info") Copier accountController:forceCreate(1, false, 1, {-1, -1, -1, -1, -1}) Copier accountController:forceDelete() Copier accountController:forceServer("Imagiro") Copier local alias = accountController:getAlias() Copier local id = accountController:getId() Copier local value = accountController:getScriptVariable("myVar") Copier local team = accountController:getTeamAccounts() Copier local members = accountController:getTeamMembers() Copier local username = accountController:getUsername() Copier accountController:global():printMessage("Hello!") Copier accountController:groupWithCharacters({"compte1", "compte2"}) Copier local pods = accountController:inventory():pods() Copier if accountController:isAccountConnected() then print("Connecte!") end Copier if accountController:isAccountFullyConnected() then print("Pret a jouer!") end Copier if accountController:isBanned() then print("Compte banni!") end Copier if accountController:isCharacterInMyTeam("MonMule") then print("Dans l'equipe!") end Copier if accountController:isController() then print("Controleur principal") end Copier if accountController:isItATeam() then print("En equipe!") end Copier if accountController:isScriptPlaying() then print("Script en cours") end Copier if accountController:isTeamLeader() then print("Je suis le chef!") end Copier local level = accountController:job():level(2) Copier accountController:loadConfig("configs/farming.json") Copier accountController:loadConfigNextConnection("config.json", true) Copier accountController:loadScript("scripts/farming.lua") Copier accountController:loadScriptNextConnection("script.lua", true) Copier accountController:map():fight() Copier accountController:merchant():open("Marchand") Copier accountController:mount():toggleRiding() Copier accountController:npc():npcBank(123) Copier local quests = accountController:quest():activeQuests() Copier accountController:reloadScript() Copier accountController:sale():SellItem(289, 1, 5000) Copier accountController:selectCharacter("MonPerso") Copier accountController:selectServer("Imagiro") Copier accountController:setScriptVariable("myVar", 100) Copier accountController:startScript() Copier accountController:stopScript() Copier accountController:ungroupCharacters({"compte2"}) Copier accountController:unloadAccount() --- # snowbotController | Snowbot Docs > Gestion globale de Snowbot **Catégorie:** Contrôle **Méthodes:** 32 * * * [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#meodes) Méodes ----------------------------------------------------------------------------------------- ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#accountisloaded) accountIsLoaded Verifie si un compte est charge en memoire. Signature: `snowbotController:accountIsLoaded(username)` Paramètres: Nom Type Description `username` `string` Nom d'utilisateur Retourne: `boolean` - true si le compte est charge Exemple: Copier if snowbotController:accountIsLoaded("monCompte") then print("Compte charge!") end * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#accountisregistered) accountIsRegistered Verifie si un compte est enregistre dans Snowbot. Signature: `snowbotController:accountIsRegistered(username)` Paramètres: Nom Type Description `username` `string` Nom d'utilisateur Retourne: `boolean` - true si le compte est enregistre Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#activateantimoderator) activateAntiModerator Active ou desactive l'anti-moderateur global. Signature: `snowbotController:activateAntiModerator(value)` Paramètres: Nom Type Description `value` `boolean` true pour activer Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#addinmemory) addInMemory Ajoute une variable dans la memoire globale. Signature: `snowbotController:addInMemory(variableName, value)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable `value` `any` Valeur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#addpushbulletkey) addPushBulletKey Ajoute une cle PushBullet pour les notifications. Signature: `snowbotController:addPushBulletKey(value)` Paramètres: Nom Type Description `value` `string` Cle API PushBullet Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#assignproxytoanaccount) assignProxyToAnAccount Assigne un proxy a un compte. Signature: `snowbotController:assignProxyToAnAccount(usernameAccount, ip, port, crendentialUsername, crendentialPassword)` Paramètres: Nom Type Description `usernameAccount` `string` Username du compte `ip` `string` IP du proxy `port` `string` Port du proxy `crendentialUsername` `string` Username du proxy `crendentialPassword` `string` Mot de passe du proxy Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#createcharacter) createCharacter Cree un nouveau personnage. Signature: `snowbotController:createCharacter(username, characterName, breed, sex, serverName, colorHtml1, colorHtml2, colorHtml3, colorHtml4, colorHtml5)` Paramètres: Nom Type Description `username` `string` Username du compte `characterName` `string` Nom du personnage `breed` `number` ID de la classe `sex` `boolean` true = femme `serverName` `string` Nom du serveur `colorHtml1-5` `string` Couleurs HTML Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#delay) delay Met en pause l'execution. Signature: `snowbotController:delay(Time)` Paramètres: Nom Type Description `Time` `number` Duree en ms Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#deleteallmemory) deleteAllMemory Supprime toute la memoire globale. Signature: `snowbotController:deleteAllMemory()` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#deletememory) deleteMemory Supprime une variable de la memoire. Signature: `snowbotController:deleteMemory(variableName)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable Retourne: `object` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#editinmemory) editInMemory Modifie une variable en memoire. Signature: `snowbotController:editInMemory(variableName, value)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable `value` `any` Nouvelle valeur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getaccount) getAccount Retourne le controleur d'un compte. Signature: `snowbotController:getAccount(username)` Paramètres: Nom Type Description `username` `string` Username Retourne: `AccountController` - Controleur du compte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getalias) getAlias Retourne l'alias d'un compte. Signature: `snowbotController:getAlias(username)` Paramètres: Nom Type Description `username` `string` Username Retourne: `string` - Alias du compte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getaliasallregisteredaccounts) getAliasAllRegisteredAccounts Retourne les alias de tous les comptes enregistres. Signature: `snowbotController:getAliasAllRegisteredAccounts()` Retourne: `table` - Liste des alias Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getaliasloadedaccounts) getAliasLoadedAccounts Retourne les alias des comptes charges. Signature: `snowbotController:getAliasLoadedAccounts()` Retourne: `table` - Liste des alias Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getloadedaccounts) getLoadedAccounts Retourne tous les comptes charges. Signature: `snowbotController:getLoadedAccounts()` Retourne: `table` - Liste des comptes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getpassword) getPassword Retourne le mot de passe d'un compte. Signature: `snowbotController:getPassword(username)` Paramètres: Nom Type Description `username` `string` Username Retourne: `string` - Mot de passe Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getrequest) getRequest Effectue une requete HTTP GET. Signature: `snowbotController:getRequest(url, headersName, headersContent)` Paramètres: Nom Type Description `url` `string` URL `headersName` `table` Headers `headersContent` `table` Valeurs Retourne: `object` - Reponse Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getusernameallregisteredaccounts) getUsernameAllRegisteredAccounts Retourne les usernames de tous les comptes. Signature: `snowbotController:getUsernameAllRegisteredAccounts()` Retourne: `table` - Liste des usernames Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getusernameloadedaccounts) getUsernameLoadedAccounts Retourne les usernames des comptes charges. Signature: `snowbotController:getUsernameLoadedAccounts()` Retourne: `table` - Liste des usernames Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#loadanaccount) loadAnAccount Charge un compte en memoire. Signature: `snowbotController:loadAnAccount(username, autoConnect)` Paramètres: Nom Type Description `username` `string` Username `autoConnect` `boolean` Connexion automatique Retourne: `AccountController` - Controleur du compte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#loadcontrolleraccount) loadControllerAccount Charge le controleur principal. Signature: `snowbotController:loadControllerAccount()` Retourne: `AccountController` - Controleur principal Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#loadteamaccount) loadTeamAccount Charge un compte en mode equipe. Signature: `snowbotController:loadTeamAccount(username, ChefUsername, autoConnect)` Paramètres: Nom Type Description `username` `string` Username du mule `ChefUsername` `string` Username du chef `autoConnect` `boolean` Connexion auto Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#postrequest) postRequest Effectue une requete HTTP POST. Signature: `snowbotController:postRequest(url, data, headersName, headersContent)` Paramètres: Nom Type Description `url` `string` URL `data` `string` Donnees `headersName` `table` Headers `headersContent` `table` Valeurs Retourne: `object` - Reponse Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#printerror) printError Affiche un message d'erreur. Signature: `snowbotController:printError(Message)` Paramètres: Nom Type Description `Message` `string` Message Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#printmessage) printMessage Affiche un message. Signature: `snowbotController:printMessage(Message)` Paramètres: Nom Type Description `Message` `string` Message Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#printsuccess) printSuccess Affiche un message de succes. Signature: `snowbotController:printSuccess(Message)` Paramètres: Nom Type Description `Message` `string` Message Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#registeranaccount) registerAnAccount Enregistre un nouveau compte. Signature: `snowbotController:registerAnAccount(username, password, alias)` Paramètres: Nom Type Description `username` `string` Username `password` `string` Mot de passe `alias` `string` Alias Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#remember) remember Recupere une variable de la memoire. Signature: `snowbotController:remember(variableName)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable Retourne: `object` - Valeur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#unloadanaccount) unloadAnAccount Decharge un compte de la memoire. Signature: `snowbotController:unloadAnAccount(username)` Paramètres: Nom Type Description `username` `string` Username Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#unlockshield) unlockShield Deverrouille le shield d'un compte. Signature: `snowbotController:unlockShield(code, nickname)` Paramètres: Nom Type Description `code` `string` Code shield `nickname` `string` Pseudo Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#version) version Retourne la version de Snowbot. Signature: `snowbotController:version()` Retourne: `string` - Version Exemple: * * * [PrécédentaccountControllerchevron-left](https://docs.snowbot.eu/methodes/controle/accountcontroller) [SuivantPersonnagechevron-right](https://docs.snowbot.eu/methodes/personnage) * [Méodes](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#meodes) * [accountIsLoaded](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#accountisloaded) * [accountIsRegistered](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#accountisregistered) * [activateAntiModerator](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#activateantimoderator) * [addInMemory](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#addinmemory) * [addPushBulletKey](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#addpushbulletkey) * [assignProxyToAnAccount](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#assignproxytoanaccount) * [createCharacter](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#createcharacter) * [delay](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#delay) * [deleteAllMemory](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#deleteallmemory) * [deleteMemory](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#deletememory) * [editInMemory](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#editinmemory) * [getAccount](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getaccount) * [getAlias](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getalias) * [getAliasAllRegisteredAccounts](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getaliasallregisteredaccounts) * [getAliasLoadedAccounts](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getaliasloadedaccounts) * [getLoadedAccounts](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getloadedaccounts) * [getPassword](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getpassword) * [getRequest](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getrequest) * [getUsernameAllRegisteredAccounts](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getusernameallregisteredaccounts) * [getUsernameLoadedAccounts](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#getusernameloadedaccounts) * [loadAnAccount](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#loadanaccount) * [loadControllerAccount](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#loadcontrolleraccount) * [loadTeamAccount](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#loadteamaccount) * [postRequest](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#postrequest) * [printError](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#printerror) * [printMessage](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#printmessage) * [printSuccess](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#printsuccess) * [registerAnAccount](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#registeranaccount) * [remember](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#remember) * [unloadAnAccount](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#unloadanaccount) * [unlockShield](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#unlockshield) * [version](https://docs.snowbot.eu/methodes/controle/snowbotcontroller#version) Copier if snowbotController:accountIsRegistered("monCompte") then print("Compte enregistre!") end Copier snowbotController:activateAntiModerator(true) Copier snowbotController:addInMemory("globalVar", 100) Copier snowbotController:addPushBulletKey("o.xxxxxxxxxxxxx") Copier snowbotController:assignProxyToAnAccount("monCompte", "192.168.1.1", "8080", "user", "pass") Copier snowbotController:createCharacter("compte", "MonPerso", 1, false, "Imagiro", "#FF0000", "#00FF00", "#0000FF", "#FFFFFF", "#000000") Copier snowbotController:delay(1000) Copier snowbotController:deleteAllMemory() Copier snowbotController:deleteMemory("globalVar") Copier snowbotController:editInMemory("globalVar", 200) Copier local account = snowbotController:getAccount("monCompte") account:connect() Copier local alias = snowbotController:getAlias("monCompte") Copier local aliases = snowbotController:getAliasAllRegisteredAccounts() Copier local aliases = snowbotController:getAliasLoadedAccounts() Copier local accounts = snowbotController:getLoadedAccounts() print("Comptes charges: " .. #accounts) Copier local pass = snowbotController:getPassword("monCompte") Copier local response = snowbotController:getRequest("https://api.example.com", {}, {}) Copier local usernames = snowbotController:getUsernameAllRegisteredAccounts() Copier local usernames = snowbotController:getUsernameLoadedAccounts() Copier local account = snowbotController:loadAnAccount("monCompte", true) Copier local controller = snowbotController:loadControllerAccount() Copier snowbotController:loadTeamAccount("mule1", "chef", true) Copier local response = snowbotController:postRequest("https://api.example.com", "{}", {}, {}) Copier snowbotController:printError("Erreur!") Copier snowbotController:printMessage("Info") Copier snowbotController:printSuccess("Succes!") Copier snowbotController:registerAnAccount("[email protected]", "password", "MonAlias") Copier local value = snowbotController:remember("globalVar") Copier snowbotController:unloadAnAccount("monCompte") Copier snowbotController:unlockShield("123456", "MonPerso") Copier local version = snowbotController:version() print("Snowbot v" .. version) --- # fightAction | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#castspelloncell) castSpellOnCell **🎮Méthode** Copier fightAction:castSpellOnCell(spell, cell) Lance un sort sur une cellule cible. Envoie une demande de lancer au serveur et attend la confirmation. Si le lancer est reussi, les PA sont automatiquement mis a jour. **Paramètres:** Nom Type Description `spell` `number` ID du sort a lancer `cell` `number` ID de la cellule cible (0-559) **Retourne:** `boolean` - true si le sort a ete lance avec succes **Exemple:** Copier -- Lancer un sort sur un ennemi local enemyCellId = fightAction:getNearestEnemy() local success = fightAction:castSpellOnCell(12345, enemyCellId) if success then global:printSuccess("Sort lance!") else global:printError("Echec du lancer") end -- Boucle d'attaque tant qu'on a des PA while fightCharacter:getAP() >= 3 do local enemy = fightAction:getNearestEnemy() if enemy ~= -1 then fightAction:castSpellOnCell(sortId, enemy) else break end end circle-info **Note:** Le sort est lance uniquement si le combat est actif. Les PA sont automatiquement mis a jour apres le lancer. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#cancastspelloncell) canCastSpellOnCell **🎮Méthode** Vérifie si un sort peut être lancé sur une cellule cible depuis une position donnée. Effectue de nombreuses vérifications : PA suffisants, portée du sort, ligne de vue (LdV), temps de relance, nombre de lancers par tour/par cible, états interdisant le lancement, etc. Retourne un code d’erreur. **Paramètres:** Nom Type Description `startCell` `number` Cellule de depart (position du lanceur) `spell` `number` ID du sort `cell` `number` Cellule cible `needToCheckInvoc` `boolean` Verifier si les invocations bloquent (defaut: true) `needToCheckLOS` `boolean` Verifier la ligne de vue (defaut: true) **Retourne:** `number` - Code SpellInabilityReason: 0 = possible, autres = raison de l'impossibilite **Exemple:** circle-info Note : Très utile pour optimiser l’IA en vérifiant la faisabilité avant de tenter le lancement. Évite les échecs inutiles. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#movetowardcell) moveTowardCell **🎮Méthode** Deplace le personnage vers une cellule cible. Calcule automatiquement le chemin optimal via le pathfinding. Si la cellule cible est occupee, trouve une cellule adjacente libre. Attend la confirmation du mouvement. **Paramètres:** Nom Type Description `cellid` `number` ID de la cellule cible (0-559) **Retourne:** `boolean` - true si le déplacement a été effectué. **Exemple:** > **Note:** Le pathfinding evite automatiquement les obstacles et les autres combattants. Si la cible est occupee, le bot se place sur une case adjacente. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#passturn) passTurn **🎮Méthode** Termine le tour du personnage. Envoie le signal de fin de tour au serveur. Le prochain combattant dans l'ordre de timeline prendra son tour. **Exemple:** circle-info **Note:** IMPORTANT: Toujours appeler passTurn() a la fin de la logique de combat pour ne pas bloquer le combat. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#choosecell) chooseCell **🎮Méthode** Choisit une cellule de placement en phase de pre-combat. Envoie la demande au serveur et attend la confirmation avec un timeout de 50 secondes. Affiche le message "Placement sur la cellule: X" dans le chat. **Paramètres:** Nom Type Description `cell` `number` ID de la cellule de placement souhaitee **Exemple:** > **Note:** Uniquement utilisable pendant la phase de placement, avant le debut du combat. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getnearestenemy) getNearestEnemy **🎮Méthode** Retourne l'ID de cellule de l'ennemi le plus proche. Parcourt tous les combattants, filtre les ennemis et calcule la distance Manhattan. Retourne -1 si aucun ennemi trouve ou si le combat n'est pas actif. **Retourne:** `number` - ID de la cellule de l'ennemi le plus proche, ou -1 si aucun **Exemple:** > **Note:** Retourne la CELLULE de l'ennemi, pas son ID de combattant. Utiliser getFighter(cellId) pour obtenir le combattant. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getnearestally) getNearestAlly **🎮Méthode** Retourne l’ID de la cellule de l’allié le plus proche (hors soi-même). Parcourt les combattants de la même équipe et renvoie la cellule de l’allié le plus proche. **Retourne:** `number` - ID de la cellule de l'allie le plus proche **Exemple:** > **Note:** Utile pour les classes support qui doivent rester pres de leurs allies. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getallentities) getAllEntities **🎮Méthode** Retourne la liste de tous les combattants presents dans le combat. Chaque combattant contient: Id, CellId, LifePoints, MaxLifePoints, Team, AP, MP, Level, etc. **Retourne:** `table` - Liste de PlugCombat (tous les combattants) **Exemple:** > **Note:** PlugCombat.Team = true pour les defenders (ennemis dans getNearestEnemy), false pour les challengers (notre equipe). ATTENTION: La logique peut varier selon le contexte de combat. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getentitiescount) getEntitiesCount **🎮Méthode** Retourne le nombre total de combattants dans le combat. **Retourne:** `number` - Nombre de combattants **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getdistance) getDistance **🎮Méthode** Calcule la distance Manhattan entre deux cellules (|x1-x2| + |y1-y2|). Retourne -1 si le combat n'est pas actif. **Paramètres:** Nom Type Description `cellStart` `number` Cellule de depart `cellEnd` `number` Cellule d'arrivee **Retourne:** `number` - Distance en cases (Manhattan), ou -1 si erreur **Exemple:** circle-info **Note:** Distance Manhattan = somme des distances horizontale et verticale. Une case adjacente = distance 1. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#ishandtohand) isHandToHand **🎮Méthode** Verifie si deux cellules sont au corps a corps (adjacentes, distance <= 1). **Paramètres:** Nom Type Description `firstCell` `number` Premiere cellule `secondCell` `number` Deuxieme cellule **Retourne:** `boolean` - true si les cellules sont adjacentes (CaC) **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#cellsaligned) cellsAligned **🎮Méthode** Verifie si deux cellules sont alignees (meme ligne ou meme colonne). **Paramètres:** Nom Type Description `cell1` `number` Premiere cellule `cell2` `number` Deuxieme cellule **Retourne:** `boolean` - true si les cellules sont alignees **Exemple:** > **Note:** Important pour les sorts qui necessitent un lancer en ligne (pas de diagonale). * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#cellsindiagonal) cellsInDiagonal **🎮Méthode** Verifie si deux cellules sont en diagonale (meme difference en X et Y). **Signature:** `fightAction:cellsInDiagonal(int_0, int_1)` **Paramètres:** Nom Type Description `int_0` `number` Premiere cellule `int_1` `number` Deuxieme cellule **Retourne:** `boolean` - true si les cellules sont en diagonale **Exemple:** > **Note:** Utile pour les sorts qui ne peuvent etre lances qu'en diagonale. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#inlineofsight) inLineOfSight **🎮Méthode** Verifie si une ligne de vue (LOS) existe entre deux cellules. Trace une ligne entre les deux points et verifie qu'aucun obstacle ne bloque la vue. Si diagonal=true, verifie aussi que les cellules sont en diagonale. **Paramètres:** Nom Type Description `firstCell` `number` Cellule de depart `secondCell` `number` Cellule cible `diagonal` `boolean` Exiger une diagonale stricte (defaut: false) **Retourne:** `boolean` - true si la cible est visible **Exemple:** circle-info **Note:** Les obstacles (murs, elements de decor) bloquent la ligne de vue. Les autres combattants peuvent aussi bloquer selon le sort. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#iswalkable) isWalkable **🎮Méthode** Verifie si une cellule est marchable (pas un obstacle). **Paramètres:** Nom Type Description `cellId` `number` ID de la cellule a verifier **Retourne:** `boolean` - true si la cellule est marchable **Exemple:** > **Note:** Une cellule peut etre marchable mais occupee par un combattant. Utilisez isFreeCell() pour verifier les deux. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#isfreecell) isFreeCell **🎮Méthode** Verifie si une cellule est libre (marchable ET non occupee par un combattant). **Signature:** `fightAction:isFreeCell(cellId)` **Paramètres:** Nom Type Description `cellId` `number` ID de la cellule **Retourne:** `boolean` - true si la cellule est libre **Exemple:** circle-info **Note:** Combine la verification de marchabilite et d'occupation. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getreachablecells) getReachableCells **🎮Méthode** Retourne la liste des cellules atteignables avec les PM actuels. Parcourt toutes les cellules (0-559), filtre les cellules libres, et verifie que la distance Manhattan est <= PM. **Retourne:** `table` - Liste des IDs de cellules atteignables **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getrealreachablecells) getRealReachableCells **🎮Méthode** Retourne les cellules reellement atteignables en tenant compte du pathfinding complet. Plus precis que getReachableCells() car prend en compte les obstacles et les chemins bloques. **Retourne:** `table` - Liste des cellules reellement atteignables **Exemple:** > **Note:** Plus lent que getReachableCells() mais plus precis. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#accessiblecells) accessibleCells **🎮Méthode** Retourne les cellules accessibles pour une entite specifique. Si id=-1, utilise le personnage actuel. **Signature:** `fightAction:accessibleCells(id)` **Paramètres:** Nom Type Description `id` `number` ID du combattant (defaut: -1 = soi-meme) **Retourne:** `table` - Liste d'AccessibleCell avec les infos de chaque cellule **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getadjacentcells) getAdjacentCells **🎮Méthode** Retourne les cellules adjacentes a une cellule donnee. Retourne les 4 cellules cardinales (haut, bas, gauche, droite) si elles existent sur la grille. **Paramètres:** Nom Type Description `cellId` `number` Cellule centrale **Retourne:** `table` - Liste des IDs de cellules adjacentes **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_cross) getCells\_cross **🎮Méthode** Retourne les cellules en forme de croix (+) autour d'une cellule centrale. Les cellules sont sur les axes cardinaux (haut, bas, gauche, droite) entre minRadius et radius. **Paramètres:** Nom Type Description `centerCell` `number` Cellule centrale `minRadius` `number` Rayon minimum (distance minimale) `radius` `number` Rayon maximum (distance maximale) **Retourne:** `table` - Liste des cellules en croix **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_diagonal) getCells\_diagonal **🎮Méthode** Retourne les cellules en diagonale (X) autour d'une cellule centrale. Les cellules sont sur les axes diagonaux entre minRadius et radius. **Paramètres:** Nom Type Description `centerCell` `number` Cellule centrale `minRadius` `number` Rayon minimum `radius` `number` Rayon maximum **Retourne:** `table` - Liste des cellules en diagonale **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_lozenge) getCells\_lozenge **🎮Méthode** Retourne les cellules en losange autour d'une cellule centrale. Le losange est la zone classique de Dofus (toutes les cellules a distance Manhattan entre minRadius et radius). **Paramètres:** Nom Type Description `centerCell` `number` Cellule centrale `minRadius` `number` Rayon minimum `radius` `number` Rayon maximum **Retourne:** `table` - Liste des cellules en losange **Exemple:** > **Note:** Le losange est la forme de zone la plus courante dans Dofus. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_square) getCells\_square **🎮Méthode** Retourne les cellules en carre autour d'une cellule centrale. Le carre inclut toutes les cellules dont la distance Chebyshev (max de |dx| et |dy|) est entre minRadius et radius. **Paramètres:** Nom Type Description `centerCell` `number` Cellule centrale `minRadius` `number` Rayon minimum `radius` `number` Rayon maximum **Retourne:** `table` - Liste des cellules en carre **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getspellzone) getSpellZone **🎮Méthode** Retourne la zone d'effet d'un sort lance sur une cellule. Calcule les cellules affectees selon le type de zone et le rayon definis dans les effets du sort. **Paramètres:** Nom Type Description `spellId` `number` ID du sort `cellId` `number` Cellule cible du sort **Retourne:** `table` - Liste des cellules affectees par le sort **Exemple:** > **Note:** Utile pour optimiser les sorts de zone en ciblant la cellule qui touche le plus d'ennemis. * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getfighter) getFighter **🎮Méthode** Retourne l'ID du combattant sur une cellule donnee. Retourne -1 si la cellule est vide. **Paramètres:** Nom Type Description `cellId` `number` ID de la cellule **Retourne:** `number` - ID du combattant, ou -1 si cellule vide **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getshortestpath) GetShortestPath **🎮Méthode** Calcule le chemin le plus court entre deux cellules en evitant les obstacles. Utilise le Pathfinder interne pour trouver le chemin optimal. **Paramètres:** Nom Type Description `int_0` `number` Cellule de depart `int_1` `number` Cellule d'arrivee `list_0` `table` Liste de cellules a eviter (obstacles additionnels) **Retourne:** `table` - Liste des cellules du chemin, ou nil si impossible **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getcurrentturn) getCurrentTurn **🎮Méthode** Retourne le numero du tour actuel du combat. Incremente a chaque nouveau tour. **Retourne:** `number` - Numero du tour (commence a 1) **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#getcurrentmapid) getCurrentMapId **🎮Méthode** Retourne l'ID de la map de combat. **Retourne:** `number` - ID de la carte de combat **Exemple:** * * * ### [hashtag](https://docs.snowbot.eu/methodes/combat/fightaction#forcecellidentity) forceCellidEntity **🎮Méthode** Force la position d'une entite localement. ATTENTION: Modification locale uniquement, n'affecte pas le serveur. **Paramètres:** Nom Type Description `entity` `number` ID du combattant `newCellid` `number` Nouvelle cellule **Exemple:** > **Note:** ATTENTION: Ne modifie pas la position reelle sur le serveur. Utile pour des simulations ou du debug. * * * [PrécédentfightChallengechevron-left](https://docs.snowbot.eu/methodes/combat/fightchallenge) [SuivantCommunicationchevron-right](https://docs.snowbot.eu/methodes/communication) Mis à jour il y a 2 mois * [castSpellOnCell](https://docs.snowbot.eu/methodes/combat/fightaction#castspelloncell) * [canCastSpellOnCell](https://docs.snowbot.eu/methodes/combat/fightaction#cancastspelloncell) * [moveTowardCell](https://docs.snowbot.eu/methodes/combat/fightaction#movetowardcell) * [passTurn](https://docs.snowbot.eu/methodes/combat/fightaction#passturn) * [chooseCell](https://docs.snowbot.eu/methodes/combat/fightaction#choosecell) * [getNearestEnemy](https://docs.snowbot.eu/methodes/combat/fightaction#getnearestenemy) * [getNearestAlly](https://docs.snowbot.eu/methodes/combat/fightaction#getnearestally) * [getAllEntities](https://docs.snowbot.eu/methodes/combat/fightaction#getallentities) * [getEntitiesCount](https://docs.snowbot.eu/methodes/combat/fightaction#getentitiescount) * [getDistance](https://docs.snowbot.eu/methodes/combat/fightaction#getdistance) * [isHandToHand](https://docs.snowbot.eu/methodes/combat/fightaction#ishandtohand) * [cellsAligned](https://docs.snowbot.eu/methodes/combat/fightaction#cellsaligned) * [cellsInDiagonal](https://docs.snowbot.eu/methodes/combat/fightaction#cellsindiagonal) * [inLineOfSight](https://docs.snowbot.eu/methodes/combat/fightaction#inlineofsight) * [isWalkable](https://docs.snowbot.eu/methodes/combat/fightaction#iswalkable) * [isFreeCell](https://docs.snowbot.eu/methodes/combat/fightaction#isfreecell) * [getReachableCells](https://docs.snowbot.eu/methodes/combat/fightaction#getreachablecells) * [getRealReachableCells](https://docs.snowbot.eu/methodes/combat/fightaction#getrealreachablecells) * [accessibleCells](https://docs.snowbot.eu/methodes/combat/fightaction#accessiblecells) * [getAdjacentCells](https://docs.snowbot.eu/methodes/combat/fightaction#getadjacentcells) * [getCells\_cross](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_cross) * [getCells\_diagonal](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_diagonal) * [getCells\_lozenge](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_lozenge) * [getCells\_square](https://docs.snowbot.eu/methodes/combat/fightaction#getcells_square) * [getSpellZone](https://docs.snowbot.eu/methodes/combat/fightaction#getspellzone) * [getFighter](https://docs.snowbot.eu/methodes/combat/fightaction#getfighter) * [GetShortestPath](https://docs.snowbot.eu/methodes/combat/fightaction#getshortestpath) * [getCurrentTurn](https://docs.snowbot.eu/methodes/combat/fightaction#getcurrentturn) * [getCurrentMapId](https://docs.snowbot.eu/methodes/combat/fightaction#getcurrentmapid) * [forceCellidEntity](https://docs.snowbot.eu/methodes/combat/fightaction#forcecellidentity) Copier fightAction:canCastSpellOnCell(startCell, spell, cell, needToCheckInvoc, needToCheckLOS) Copier -- Verifier avant de lancer local myCell = fightCharacter:getCellId() local result = fightAction:canCastSpellOnCell(myCell, 12345, targetCell, true, true) if result == 0 then fightAction:castSpellOnCell(12345, targetCell) elseif result == 1 then global:printWarning("Pas assez de PA") elseif result == 2 then global:printWarning("Hors de portee") elseif result == 3 then global:printWarning("Ligne de vue bloquee") end -- Codes SpellInabilityReason courants: -- 0 = CAN_CAST (possible) -- 1 = ACTION_POINTS (PA insuffisants) -- 2 = TOO_FAR (trop loin) -- 3 = LINE_OF_SIGHT (LOS bloquee) -- 4 = COOLDOWN (en recharge) -- 5 = MAX_CAST_PER_TURN (max lancer/tour atteint) -- 6 = MAX_CAST_PER_TARGET (max lancer/cible atteint) Copier fightAction:moveTowardCell(cellid) Copier -- Se deplacer vers l'ennemi le plus proche local enemyCellId = fightAction:getNearestEnemy() if enemyCellId ~= -1 then local success = fightAction:moveTowardCell(enemyCellId) if success then global:printMessage("Deplacement effectue") end end -- Se rapprocher puis attaquer if fightCharacter:getMP() > 0 then fightAction:moveTowardCell(targetCell) end if fightAction:isHandToHand(fightCharacter:getCellId(), targetCell) then fightAction:castSpellOnCell(sortCaC, targetCell) end Copier fightAction:passTurn() Copier -- Fin de tour apres avoir joue function fightManagement() -- Actions de combat... while fightCharacter:getAP() >= 3 do fightAction:castSpellOnCell(sortId, cible) end -- Fin du tour fightAction:passTurn() end -- Passer le tour si vie trop basse if fightCharacter:getLifePointsP() < 10 then global:printWarning("Vie critique, je passe") fightAction:passTurn() return end Copier fightAction:chooseCell(cell) Copier -- Dans prefightManagement() function prefightManagement(positionsChallengers, positionsDefenders) -- Choisir une cellule eloignee des ennemis local meilleureCellule = nil local maxDistance = 0 for cellId, _ in pairs(positionsChallengers) do local distMin = 1000 for cellDef, _ in pairs(positionsDefenders) do local dist = fightAction:getDistance(cellId, cellDef) if dist < distMin then distMin = dist end end if distMin > maxDistance then maxDistance = distMin meilleureCellule = cellId end end if meilleureCellule then fightAction:chooseCell(meilleureCellule) end end Copier fightAction:getNearestEnemy() Copier -- Cibler l'ennemi le plus proche local enemyCellId = fightAction:getNearestEnemy() if enemyCellId ~= -1 then global:printMessage("Ennemi le plus proche sur cellule: " .. enemyCellId) -- Se rapprocher si trop loin local distance = fightAction:getDistance(fightCharacter:getCellId(), enemyCellId) if distance > 3 then fightAction:moveTowardCell(enemyCellId) end -- Attaquer fightAction:castSpellOnCell(sortId, enemyCellId) end Copier fightAction:getNearestAlly() Copier -- Rejoindre l'allie le plus proche local allieCellId = fightAction:getNearestAlly() if allieCellId ~= -1 then fightAction:moveTowardCell(allieCellId) end -- Soigner l'allie le plus proche local allieCellId = fightAction:getNearestAlly() if allieCellId ~= -1 then fightAction:castSpellOnCell(sortSoin, allieCellId) end Copier fightAction:getAllEntities() Copier -- Lister tous les combattants local entities = fightAction:getAllEntities() for _, entity in ipairs(entities) do local type = entity.Team and "Ennemi" or "Allie" global:printMessage(type .. " - PV: " .. entity.LifePoints .. "/" .. entity.MaxLifePoints .. " - Cell: " .. entity.CellId) end -- Trouver l'ennemi le plus faible local plusFaible = nil local minHP = 999999 for _, entity in ipairs(fightAction:getAllEntities()) do if entity.Team and entity.LifePoints > 0 and entity.LifePoints < minHP then minHP = entity.LifePoints plusFaible = entity end end if plusFaible then fightAction:castSpellOnCell(sortId, plusFaible.CellId) end Copier fightAction:getEntitiesCount() Copier local count = fightAction:getEntitiesCount() global:printMessage("Combattants: " .. count) -- Verifier si combat presque termine local entities = fightAction:getAllEntities() local ennemisVivants = 0 for _, e in ipairs(entities) do if e.Team and e.LifePoints > 0 then ennemisVivants = ennemisVivants + 1 end end global:printMessage("Ennemis restants: " .. ennemisVivants) Copier fightAction:getDistance(cellStart, cellEnd) Copier -- Verifier si a portee local maCellule = fightCharacter:getCellId() local enemyCellule = fightAction:getNearestEnemy() local distance = fightAction:getDistance(maCellule, enemyCellule) global:printMessage("Distance a l'ennemi: " .. distance) if distance <= 3 then fightAction:castSpellOnCell(sortDistance, enemyCellule) elseif distance == 1 then fightAction:castSpellOnCell(sortCaC, enemyCellule) end Copier fightAction:isHandToHand(firstCell, secondCell) Copier -- Verifier si au corps a corps avec l'ennemi local maCellule = fightCharacter:getCellId() local enemyCellule = fightAction:getNearestEnemy() if fightAction:isHandToHand(maCellule, enemyCellule) then global:printMessage("Au corps a corps!") fightAction:castSpellOnCell(sortCaC, enemyCellule) else global:printMessage("Trop loin pour le CaC") fightAction:moveTowardCell(enemyCellule) end Copier fightAction:cellsAligned(cell1, cell2) Copier -- Verifier l'alignement pour un sort en ligne local maCellule = fightCharacter:getCellId() local enemyCellule = fightAction:getNearestEnemy() if fightAction:cellsAligned(maCellule, enemyCellule) then global:printSuccess("Cibles alignees - sort en ligne possible!") fightAction:castSpellOnCell(sortEnLigne, enemyCellule) end Copier fightAction:cellsInDiagonal(int_0, int_1) Copier -- Verifier pour un sort diagonal if fightAction:cellsInDiagonal(maCellule, cible) then global:printMessage("En diagonale!") fightAction:castSpellOnCell(sortDiagonal, cible) end Copier fightAction:inLineOfSight(firstCell, secondCell, diagonal) Copier -- Verifier la LOS avant de lancer local maCellule = fightCharacter:getCellId() local enemyCellule = fightAction:getNearestEnemy() if fightAction:inLineOfSight(maCellule, enemyCellule, false) then global:printSuccess("Cible visible!") fightAction:castSpellOnCell(sortLOS, enemyCellule) else global:printWarning("Ligne de vue bloquee - deplacement necessaire") -- Chercher une meilleure position end Copier fightAction:isWalkable(cellId) Copier -- Verifier avant de se deplacer if fightAction:isWalkable(targetCell) then fightAction:moveTowardCell(targetCell) else global:printWarning("Cellule non marchable (obstacle)") end Copier fightAction:isFreeCell(cellId) Copier -- Trouver une cellule libre adjacente local adjacentes = fightAction:getAdjacentCells(maCellule) for _, cell in ipairs(adjacentes) do if fightAction:isFreeCell(cell) then global:printMessage("Cellule libre: " .. cell) fightAction:moveTowardCell(cell) break end end Copier fightAction:getReachableCells() Copier -- Obtenir les cellules ou je peux me deplacer local cellules = fightAction:getReachableCells() global:printMessage("Cellules atteignables: " .. #cellules) -- Choisir la meilleure position for _, cell in ipairs(cellules) do if fightAction:inLineOfSight(cell, enemyCellule, false) then fightAction:moveTowardCell(cell) break end end Copier fightAction:getRealReachableCells() Copier -- Cellules vraiment accessibles local cellules = fightAction:getRealReachableCells() global:printMessage("Cellules reellement accessibles: " .. #cellules) Copier fightAction:accessibleCells(id) Copier -- Cellules accessibles pour moi local cells = fightAction:accessibleCells(-1) -- Cellules accessibles pour un ennemi specifique local enemyId = 123456 local enemyCells = fightAction:accessibleCells(enemyId) Copier fightAction:getAdjacentCells(cellId) Copier -- Obtenir les cellules autour de moi local adjacentes = fightAction:getAdjacentCells(fightCharacter:getCellId()) global:printMessage("Cellules adjacentes: " .. #adjacentes) -- Chercher une cellule libre adjacente for _, cell in ipairs(adjacentes) do if fightAction:isFreeCell(cell) then global:printMessage("Cellule adjacente libre: " .. cell) end end Copier fightAction:getCells_cross(centerCell, minRadius, radius) Copier -- Cellules en croix a 1-3 cases de distance local crossCells = fightAction:getCells_cross(maCellule, 1, 3) for _, cell in ipairs(crossCells) do if fightAction:getFighter(cell) ~= -1 then global:printMessage("Combattant sur la croix!") end end Copier fightAction:getCells_diagonal(centerCell, minRadius, radius) Copier -- Cellules en diagonale local diagCells = fightAction:getCells_diagonal(maCellule, 1, 3) Copier fightAction:getCells_lozenge(centerCell, minRadius, radius) Copier -- Zone de sort en losange (portee 0-4) local zoneCells = fightAction:getCells_lozenge(targetCell, 0, 4) local ennemisZone = 0 for _, cell in ipairs(zoneCells) do if fightAction:getFighter(cell) ~= -1 then ennemisZone = ennemisZone + 1 end end global:printMessage("Ennemis dans la zone: " .. ennemisZone) Copier fightAction:getCells_square(centerCell, minRadius, radius) Copier -- Zone carree local squareCells = fightAction:getCells_square(maCellule, 0, 2) Copier fightAction:getSpellZone(spellId, cellId) Copier -- Voir la zone d'effet d'un sort local zone = fightAction:getSpellZone(12345, targetCell) if zone then global:printMessage("Cellules affectees: " .. #zone) -- Compter les ennemis dans la zone local ennemis = 0 for _, cell in ipairs(zone) do local fighter = fightAction:getFighter(cell) -- Verifier si c'est un ennemi end end Copier fightAction:getFighter(cellId) Copier -- Verifier qui est sur une cellule local fighterId = fightAction:getFighter(256) if fighterId ~= -1 then global:printMessage("Combattant ID: " .. fighterId .. " sur cellule 256") else global:printMessage("Cellule 256 vide") end Copier fightAction:GetShortestPath(int_0, int_1, list_0) Copier -- Calculer un chemin local path = fightAction:GetShortestPath(maCellule, targetCell, {}) if path then global:printMessage("Chemin de " .. #path .. " cases") for i, cell in ipairs(path) do global:printMessage("Etape " .. i .. ": cellule " .. cell) end end Copier fightAction:getCurrentTurn() Copier local tour = fightAction:getCurrentTurn() global:printMessage("Tour " .. tour) -- Adapter la strategie selon le tour if tour == 1 then -- Premier tour: buff et positionnement elseif tour > 5 then -- Tours avances: focus DPS end Copier fightAction:getCurrentMapId() Copier local mapId = fightAction:getCurrentMapId() global:printMessage("Combat sur map: " .. mapId) Copier fightAction:forceCellidEntity(entity, newCellid) Copier -- Forcer la position d'un ennemi (local uniquement) fightAction:forceCellidEntity(enemyId, 200) --- # character | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#accountid) accountId Retourne l'identifiant unique du compte Ankama (idaccount) associe au personnage. Cet ID est different de l'ID du personnage et reste constant pour tous les personnages du meme compte. **Signature:** `character:accountId()` **Retourne:** `number` - ID du compte Ankama (Double) **Exemple:** Copier local accountId = character:accountId() global:printMessage("Account ID: " .. accountId) -- Utile pour identifier un compte specifique if accountId == 123456789 then global:printMessage("Compte principal detecte") end ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#planning) PLANNING Permet de **planifier les déconnexions des personnages** en fonction des **heures que vous avez définies**. **Signature:** PLANNING **Retourne:** `number` **Exemple:** Dans l’exemple, le bot se déconnectera à partir de 14 h jusqu’à 16 h. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#askshieldcode) askShieldCode Envoie une requete a l'API Ankama (haapi.ankama.com) pour recevoir un code de securite Shield par email. Ce code est necessaire pour valider un nouveau certificat Shield et permettre la connexion sans passer par le launcher Zaap. Utilise l'API v4 avec les headers du client Dofus. **Signature:** `character:askShieldCode()` **Exemple:** > **Note:** Le code est envoye a l'email associe au compte Ankama. Valide pour l'API v4. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#askshieldcodenew) askShieldCodeNew Version mise a jour de askShieldCode() utilisant l'API Ankama v5 et le format Zaap 3.6.4. Envoie une requete pour recevoir un code Shield par email avec les nouveaux headers requis. **Signature:** `character:askShieldCodeNew(nickname, apiKey)` **Paramètres:** Nom Type Description `nickname` `string` Pseudo du compte (pour le message de confirmation) `apiKey` `string` Cle API Ankama (obtenue lors de l'authentification) **Exemple:** > **Note:** Preferer cette version pour les nouvelles authentifications. Utilise Zaap 3.6.4 comme User-Agent. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#breed) breed Retourne l'ID numerique de la classe du personnage. Chaque classe Dofus a un ID unique: 1=Feca, 2=Osamodas, 3=Enutrof, 4=Sram, 5=Xelor, 6=Ecaflip, 7=Eniripsa, 8=Iop, 9=Cra, 10=Sadida, 11=Sacrieur, 12=Pandawa, 13=Roublard, 14=Zobal, 15=Steamer, 16=Eliotrope, 17=Huppermage, 18=Ouginak, 19=Forgelance. **Signature:** `character:breed()` **Retourne:** `number` - ID de la classe (1-19) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#breedname) breedName Retourne le nom de la classe du personnage en utilisant l'enumeration BreedEnum du jeu. Convertit automatiquement l'ID de classe en nom lisible. **Signature:** `character:breedName()` **Retourne:** `string` - Nom de la classe (ex: "Enutrof", "Iop", "Cra") **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#certified) certified Verifie si le compte est certifie aupres d'Ankama. Un compte certifie a complete le processus de verification d'identite et beneficie de protections supplementaires. **Signature:** `character:certified()` **Retourne:** `boolean` - true si le compte est certifie Ankama **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#energypoints) energyPoints Retourne les points d'energie actuels du personnage. L'energie diminue a chaque mort et se regenere avec le temps ou via des items specifiques. A 0 energie, le personnage devient un fantome. **Signature:** `character:energyPoints()` **Retourne:** `number` - Points d'energie actuels **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#experience) experience Retourne le total de points d'experience (XP) accumules par le personnage depuis sa creation. Cette valeur determine le niveau du personnage. **Signature:** `character:experience()` **Retourne:** `number` - Experience totale (Double) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#freemode) freeMode Verifie si le compte est en mode gratuit (non abonne). Compare la date d'expiration de l'abonnement (timestamp Unix depuis 1970) avec la date actuelle. En mode gratuit, l'acces aux zones P2P est restreint. **Signature:** `character:freeMode()` **Retourne:** `boolean` - true si l'abonnement a expire, false si encore abonne **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getagilitybase) getAgilityBase Retourne les points d'agilite de BASE du personnage, c'est-a-dire uniquement les points investis via les caracteristiques, sans compter les bonus d'equipement, de buff ou de parchemins. **Signature:** `character:getAgilityBase()` **Retourne:** `number` - Agilite de base (sans bonus) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getchancebase) getChanceBase Retourne les points de chance de BASE du personnage (investis via caracteristiques uniquement, hors equipement et buffs). **Signature:** `character:getChanceBase()` **Retourne:** `number` - Chance de base **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getcostagility) getCostAgility Calcule le cout en points de caracteristiques pour augmenter l'agilite d'UN point. Le cout varie selon la classe (breed) et le nombre de points deja investis. Utilise l'algorithme RiseOneSort pour calculer le cout progressif. **Signature:** `character:getCostAgility()` **Retourne:** `number` - Cout en points pour +1 agilite **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getcostchance) getCostChance Calcule le cout en points de caracteristiques pour augmenter la chance d'UN point. Le cout depend de la classe et des points deja investis. **Signature:** `character:getCostChance()` **Retourne:** `number` - Cout en points pour +1 chance **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getcostintelligence) getCostIntelligence Calcule le cout en points de caracteristiques pour augmenter l'intelligence d'UN point. **Signature:** `character:getCostIntelligence()` **Retourne:** `number` - Cout en points pour +1 intelligence **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getcoststrenght) getCostStrenght Calcule le cout en points de caracteristiques pour augmenter la force d'UN point. **Signature:** `character:getCostStrenght()` **Retourne:** `number` - Cout en points pour +1 force **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getcostvitality) getCostVitality Calcule le cout en points de caracteristiques pour augmenter la vitalite d'UN point. La vitalite coute generalement 1 point quelque soit la classe. **Signature:** `character:getCostVitality()` **Retourne:** `number` - Cout en points pour +1 vitalite **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getcostwisdom) getCostWisdom Calcule le cout en points de caracteristiques pour augmenter la sagesse d'UN point. La sagesse coute generalement 3 points quelque soit la classe. **Signature:** `character:getCostWisdom()` **Retourne:** `number` - Cout en points pour +1 sagesse **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getintelligencebase) getIntelligenceBase Retourne les points d'intelligence de BASE du personnage (hors equipement et buffs). **Signature:** `character:getIntelligenceBase()` **Retourne:** `number` - Intelligence de base **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getsecondsbeforefreemode) getSecondsBeforeFreeMode Calcule le nombre de secondes restantes avant l'expiration de l'abonnement. Retourne 0 si l'abonnement est deja expire. Utilise le timestamp d'abonnement (Abonnementtime) stocke en secondes depuis le 1er janvier 1970. **Signature:** `character:getSecondsBeforeFreeMode()` **Retourne:** `number` - Secondes restantes (0 si expire) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getspellminplayerlevel) getSpellMinPlayerLevel Retourne le niveau minimum requis pour apprendre un sort specifique. Interroge les donnees D2O (Spells et SpellLevels) pour trouver le minPlayerLevel du premier niveau du sort. **Signature:** `character:getSpellMinPlayerLevel(spellId)` **Paramètres:** Nom Type Description `spellId` `number` ID du sort a verifier **Retourne:** `number` - Niveau minimum requis (-1 si erreur) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getspellvariant) getSpellVariant Tente d'obtenir une variante de sort specifique. Verifie d'abord si le personnage possede deja cette variante dans sa liste de sorts, puis si le niveau est suffisant. Si les conditions sont remplies, envoie le paquet 6707 pour debloquer la variante. **Signature:** `character:getSpellVariant(varSpellId)` **Paramètres:** Nom Type Description `varSpellId` `number` ID de la variante de sort a obtenir **Retourne:** `boolean` - true si la variante a ete obtenue/demandee avec succes **Exemple:** > **Note:** Affiche un message d'erreur si le sort est deja possede ou si le niveau est insuffisant. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getstats) getStats Retourne l'objet CharacterCharacteristicsInformations complet contenant TOUTES les statistiques du personnage avec leurs valeurs base, additionalPoints, objectsAndMountBonus, alignGiftBonus, contextModif. **Signature:** `character:getStats()` **Retourne:** `CharacterCharacteristicsInformations` - Objet complet avec toutes les stats **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getstatus) getStatus Retourne le nom du statut actuel du personnage tel qu'il est stocke en memoire (Statut\_name). Les statuts possibles incluent: Disponible, Absent, Occupe, Solo, etc. **Signature:** `character:getStatus()` **Retourne:** `string` - Nom du statut actuel **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getstrenghtbase) getStrenghtBase Retourne les points de force de BASE du personnage (investis via caracteristiques uniquement). **Signature:** `character:getStrenghtBase()` **Retourne:** `number` - Force de base **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#geturlbodyskin) getURLBodySkin Genere une URL vers le service de rendu Ankama pour obtenir l'image complete (corps entier) du personnage avec son equipement actuel. Utilise lookcharacter pour generer le skin. **Signature:** `character:getURLBodySkin(orientation, width, height, zoom)` **Paramètres:** Nom Type Description `orientation` `number` Direction du personnage (0-7, defaut: 3 = face) `width` `number` Largeur de l'image en pixels (defaut: 150) `height` `number` Hauteur de l'image en pixels (defaut: 220) `zoom` `number` Niveau de zoom (defaut: 0) **Retourne:** `string` - URL complete de l'image **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#geturlfaceskin) getURLFaceSkin Genere une URL vers le service de rendu Ankama pour obtenir l'image du visage/tete du personnage. Utile pour les avatars ou icones. **Signature:** `character:getURLFaceSkin(orientation, width, height, zoom)` **Paramètres:** Nom Type Description `orientation` `number` Direction (0-7, defaut: 3) `width` `number` Largeur en pixels (defaut: 32) `height` `number` Hauteur en pixels (defaut: 32) `zoom` `number` Niveau de zoom (defaut: 0) **Retourne:** `string` - URL de l'image du visage **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getvitalitybase) getVitalityBase Retourne les points de vitalite de BASE du personnage (investis via caracteristiques uniquement). **Signature:** `character:getVitalityBase()` **Retourne:** `number` - Vitalite de base **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#getwisdombase) getWisdomBase Retourne les points de sagesse de BASE du personnage (investis via caracteristiques uniquement). La sagesse augmente l'XP gagnee et les chances de retrait de PA/PM. **Signature:** `character:getWisdomBase()` **Retourne:** `number` - Sagesse de base **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#id) id Retourne l'identifiant unique du personnage (idperso) en tant que Double. Cet ID est unique pour chaque personnage dans le jeu et ne change jamais. **Signature:** `character:id()` **Retourne:** `number` - ID unique du personnage (Double) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#identifier) identifier Retourne l'identifiant du personnage sous forme de chaine de caracteres. Equivalent a id() mais en format string. **Signature:** `character:identifier()` **Retourne:** `string` - ID du personnage (String) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#isinfight) isInFight Verifie si le personnage est actuellement en combat. Utilise le flag IsInFight du MITM qui est mis a jour a chaque changement d'etat. **Signature:** `character:isInFight()` **Retourne:** `boolean` - true si en combat **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#kamas) kamas Retourne le nombre de kamas que possede le personnage dans son inventaire (pas en banque). Les kamas sont la monnaie principale du jeu. **Signature:** `character:kamas()` **Retourne:** `number` - Nombre de kamas (Double) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#level) level Retourne le niveau actuel du personnage (1 a 200). Le niveau determine les zones accessibles, les equipements utilisables et les sorts disponibles. **Signature:** `character:level()` **Retourne:** `number` - Niveau actuel (1-200) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#lifepoints) lifePoints Retourne les points de vie actuels du personnage. Cette valeur change pendant les combats et apres regeneration. **Signature:** `character:lifePoints()` **Retourne:** `number` - PV actuels **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#lifepointsp) lifePointsP Retourne le pourcentage de vie actuel du personnage, calcule comme (lifePoints \* 100) / maxLifePoints. Division entiere, donc le resultat est un entier entre 0 et 100. **Signature:** `character:lifePointsP()` **Retourne:** `number` - Pourcentage de vie (0-100) **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#maxenergypoints) maxEnergyPoints Retourne le maximum de points d'energie du personnage. L'energie max augmente avec le niveau. **Signature:** `character:maxEnergyPoints()` **Retourne:** `number` - Energie maximum **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#maxlifepoints) maxLifePoints Retourne les points de vie maximum du personnage (incluant vitalite de base + equipement + buffs). **Signature:** `character:maxLifePoints()` **Retourne:** `number` - PV maximum **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#name) name Retourne le nom du personnage (nomperso) tel qu'il apparait en jeu. **Signature:** `character:name()` **Retourne:** `string` - Nom du personnage **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#nickname) nickname Retourne le tag complet du compte au format "pseudo#discriminant". Ce tag est l'identifiant unique visible utilise pour ajouter des amis ou identifier un joueur. **Signature:** `character:nickname()` **Retourne:** `string` - Tag au format "nickname#tag" **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#resetstats) resetStats Envoie une requete au serveur (ResetCharacterStatsRequestMessage) pour reinitialiser tous les points de caracteristiques du personnage. Les points sont rendus et peuvent etre redistribues. Necessite d'etre dans un lieu approprie (temple de classe, Astrub, etc.). **Signature:** `character:resetStats()` **Exemple:** > **Note:** Necessite d'etre au bon endroit. Gratuit jusqu'au niveau 100, payant apres. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#sendshieldcode) sendShieldCode Valide un code Shield recu par email aupres de l'API Ankama v4. En cas de succes, sauvegarde le certificat Shield dans le dossier save/ et declenche une reconnexion automatique pour activer le Shield. Le fichier est nomme avec le hash MD5 du username. **Signature:** `character:sendShieldCode(code)` **Paramètres:** Nom Type Description `code` `string` Code a 6 chiffres recu par email **Exemple:** > **Note:** Le certificat est sauvegarde dans save/\[hash\]\_shield.json. Supprimez ce fichier pour recommencer. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#sendshieldcodenew) sendShieldCodeNew Version mise a jour de sendShieldCode() utilisant l'API Ankama v5. Valide le code et sauvegarde le certificat avec l'API key et sa date d'expiration. **Signature:** `character:sendShieldCodeNew(code, apiKey)` **Paramètres:** Nom Type Description `code` `string` Code a 6 chiffres `apiKey` `string` Cle API Ankama **Exemple:** > **Note:** Utilise l'API v5 et sauvegarde dans save/shields/\[username\]\_shield.json. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#server) server Retourne le nom du serveur sur lequel le personnage est connecte. Interroge les donnees D2O (Servers) pour obtenir le nom traduit a partir de l'ID serveur. **Signature:** `character:server()` **Retourne:** `string` - Nom du serveur (ex: "Ombre", "Echo", "Imagiro") **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#serverid) serverId Retourne l'ID numerique du serveur actuel (idserver). **Signature:** `character:serverId()` **Retourne:** `number` - ID du serveur **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#servername) serverName Alias de server(). Retourne le nom traduit du serveur actuel. **Signature:** `character:serverName()` **Retourne:** `string` - Nom du serveur **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#sex) sex Retourne le sexe du personnage. La valeur booleenne correspond au champ sex du PacketAnalyser. **Signature:** `character:sex()` **Retourne:** `boolean` - true = feminin, false = masculin **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#statspoint) statsPoint Retourne le nombre de points de caracteristiques disponibles a repartir (additionnalpoint). Ces points sont gagnes a chaque niveau et peuvent etre investis dans les stats. **Signature:** `character:statsPoint()` **Retourne:** `number` - Points de stats disponibles **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#trusted) trusted Verifie si le compte est marque comme "de confiance" (TrustedAccount). Un compte trusted a generalement moins de restrictions. **Signature:** `character:trusted()` **Retourne:** `boolean` - true si compte de confiance **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#upgradeagility) UpgradeAgility Investit des points de caracteristiques en agilite. Envoie le paquet 5610 au serveur avec le type AGILITY et le nombre de points. Le cout reel depend de la classe et du nombre de points deja investis. **Signature:** `character:UpgradeAgility(StatsPoint)` **Paramètres:** Nom Type Description `StatsPoint` `number` Nombre de points a investir (pas le gain en agilite!) **Exemple:** > **Note:** Le parametre est le nombre de points de STATS a utiliser, pas le gain en agilite. ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#upgradechance) UpgradeChance Investit des points de caracteristiques en chance. Envoie le paquet 5610 avec le type CHANCE. **Signature:** `character:UpgradeChance(StatsPoint)` **Paramètres:** Nom Type Description `StatsPoint` `number` Nombre de points a investir **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#upgradeintelligence) UpgradeIntelligence Investit des points de caracteristiques en intelligence. Envoie le paquet 5610 avec le type INTEL. **Signature:** `character:UpgradeIntelligence(StatsPoint)` **Paramètres:** Nom Type Description `StatsPoint` `number` Nombre de points a investir **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#upgradestrenght) UpgradeStrenght Investit des points de caracteristiques en force. Envoie le paquet 5610 avec le type STRENGHT. **Signature:** `character:UpgradeStrenght(StatsPoint)` **Paramètres:** Nom Type Description `StatsPoint` `number` Nombre de points a investir **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#upgradevitality) UpgradeVitality Investit des points de caracteristiques en vitalite. Envoie le paquet 5610 avec le type VITALITY. La vitalite coute generalement 1 point pour 1, donc c'est souvent le meilleur investissement pour les debutants. **Signature:** `character:UpgradeVitality(StatsPoint)` **Paramètres:** Nom Type Description `StatsPoint` `number` Nombre de points a investir **Exemple:** ### [hashtag](https://docs.snowbot.eu/methodes/personnage/character#upgradewisdom) UpgradeWisdom Investit des points de caracteristiques en sagesse. Envoie le paquet 5610 avec le type WISDOM. La sagesse coute generalement 3 points pour 1. **Signature:** `character:UpgradeWisdom(StatsPoint)` **Paramètres:** Nom Type Description `StatsPoint` `number` Nombre de points a investir **Exemple:** [PrécédentPersonnagechevron-left](https://docs.snowbot.eu/methodes/personnage) [Suivantinventorychevron-right](https://docs.snowbot.eu/methodes/personnage/inventory) Mis à jour il y a 2 mois * [accountId](https://docs.snowbot.eu/methodes/personnage/character#accountid) * [PLANNING](https://docs.snowbot.eu/methodes/personnage/character#planning) * [askShieldCode](https://docs.snowbot.eu/methodes/personnage/character#askshieldcode) * [askShieldCodeNew](https://docs.snowbot.eu/methodes/personnage/character#askshieldcodenew) * [breed](https://docs.snowbot.eu/methodes/personnage/character#breed) * [breedName](https://docs.snowbot.eu/methodes/personnage/character#breedname) * [certified](https://docs.snowbot.eu/methodes/personnage/character#certified) * [energyPoints](https://docs.snowbot.eu/methodes/personnage/character#energypoints) * [experience](https://docs.snowbot.eu/methodes/personnage/character#experience) * [freeMode](https://docs.snowbot.eu/methodes/personnage/character#freemode) * [getAgilityBase](https://docs.snowbot.eu/methodes/personnage/character#getagilitybase) * [getChanceBase](https://docs.snowbot.eu/methodes/personnage/character#getchancebase) * [getCostAgility](https://docs.snowbot.eu/methodes/personnage/character#getcostagility) * [getCostChance](https://docs.snowbot.eu/methodes/personnage/character#getcostchance) * [getCostIntelligence](https://docs.snowbot.eu/methodes/personnage/character#getcostintelligence) * [getCostStrenght](https://docs.snowbot.eu/methodes/personnage/character#getcoststrenght) * [getCostVitality](https://docs.snowbot.eu/methodes/personnage/character#getcostvitality) * [getCostWisdom](https://docs.snowbot.eu/methodes/personnage/character#getcostwisdom) * [getIntelligenceBase](https://docs.snowbot.eu/methodes/personnage/character#getintelligencebase) * [getSecondsBeforeFreeMode](https://docs.snowbot.eu/methodes/personnage/character#getsecondsbeforefreemode) * [getSpellMinPlayerLevel](https://docs.snowbot.eu/methodes/personnage/character#getspellminplayerlevel) * [getSpellVariant](https://docs.snowbot.eu/methodes/personnage/character#getspellvariant) * [getStats](https://docs.snowbot.eu/methodes/personnage/character#getstats) * [getStatus](https://docs.snowbot.eu/methodes/personnage/character#getstatus) * [getStrenghtBase](https://docs.snowbot.eu/methodes/personnage/character#getstrenghtbase) * [getURLBodySkin](https://docs.snowbot.eu/methodes/personnage/character#geturlbodyskin) * [getURLFaceSkin](https://docs.snowbot.eu/methodes/personnage/character#geturlfaceskin) * [getVitalityBase](https://docs.snowbot.eu/methodes/personnage/character#getvitalitybase) * [getWisdomBase](https://docs.snowbot.eu/methodes/personnage/character#getwisdombase) * [id](https://docs.snowbot.eu/methodes/personnage/character#id) * [identifier](https://docs.snowbot.eu/methodes/personnage/character#identifier) * [isInFight](https://docs.snowbot.eu/methodes/personnage/character#isinfight) * [kamas](https://docs.snowbot.eu/methodes/personnage/character#kamas) * [level](https://docs.snowbot.eu/methodes/personnage/character#level) * [lifePoints](https://docs.snowbot.eu/methodes/personnage/character#lifepoints) * [lifePointsP](https://docs.snowbot.eu/methodes/personnage/character#lifepointsp) * [maxEnergyPoints](https://docs.snowbot.eu/methodes/personnage/character#maxenergypoints) * [maxLifePoints](https://docs.snowbot.eu/methodes/personnage/character#maxlifepoints) * [name](https://docs.snowbot.eu/methodes/personnage/character#name) * [nickname](https://docs.snowbot.eu/methodes/personnage/character#nickname) * [resetStats](https://docs.snowbot.eu/methodes/personnage/character#resetstats) * [sendShieldCode](https://docs.snowbot.eu/methodes/personnage/character#sendshieldcode) * [sendShieldCodeNew](https://docs.snowbot.eu/methodes/personnage/character#sendshieldcodenew) * [server](https://docs.snowbot.eu/methodes/personnage/character#server) * [serverId](https://docs.snowbot.eu/methodes/personnage/character#serverid) * [serverName](https://docs.snowbot.eu/methodes/personnage/character#servername) * [sex](https://docs.snowbot.eu/methodes/personnage/character#sex) * [statsPoint](https://docs.snowbot.eu/methodes/personnage/character#statspoint) * [trusted](https://docs.snowbot.eu/methodes/personnage/character#trusted) * [UpgradeAgility](https://docs.snowbot.eu/methodes/personnage/character#upgradeagility) * [UpgradeChance](https://docs.snowbot.eu/methodes/personnage/character#upgradechance) * [UpgradeIntelligence](https://docs.snowbot.eu/methodes/personnage/character#upgradeintelligence) * [UpgradeStrenght](https://docs.snowbot.eu/methodes/personnage/character#upgradestrenght) * [UpgradeVitality](https://docs.snowbot.eu/methodes/personnage/character#upgradevitality) * [UpgradeWisdom](https://docs.snowbot.eu/methodes/personnage/character#upgradewisdom) Copier PLANNING = {14,15} Copier -- Demander un code Shield character:askShieldCode() global:printMessage("Un code a ete envoye a votre email!") -- Ensuite, utiliser sendShieldCode() avec le code recu local code = global:askInput("Entrez le code Shield recu par email:", "Shield") character:sendShieldCode(code) Copier -- Avec la nouvelle API local apiKey = "votre-api-key" character:askShieldCodeNew(character:nickname(), apiKey) Copier local breed = character:breed() -- Table des classes local classes = { [1] = "Feca", [2] = "Osamodas", [3] = "Enutrof", [4] = "Sram", [5] = "Xelor", [6] = "Ecaflip", [7] = "Eniripsa", [8] = "Iop", [9] = "Cra", [10] = "Sadida", [11] = "Sacrieur", [12] = "Pandawa", [13] = "Roublard", [14] = "Zobal", [15] = "Steamer", [16] = "Eliotrope", [17] = "Huppermage", [18] = "Ouginak", [19] = "Forgelance" } global:printMessage("Classe: " .. (classes[breed] or "Inconnue")) Copier local className = character:breedName() global:printMessage("Je suis un " .. className) -- Adapter le comportement selon la classe if className == "Eniripsa" then global:printMessage("Mode heal actif") elseif className == "Iop" or className == "Sacrieur" then global:printMessage("Mode tank actif") end Copier if character:certified() then global:printSuccess("Compte certifie - Echanges autorises") else global:printMessage("Compte non certifie - Restrictions possibles") end Copier local energy = character:energyPoints() local maxEnergy = character:maxEnergyPoints() local percent = (energy * 100) / maxEnergy global:printMessage("Energie: " .. energy .. "/" .. maxEnergy .. " (" .. math.floor(percent) .. "%)") if energy < maxEnergy * 0.2 then global:printError("Energie critique! Risque de devenir fantome.") end Copier local xp = character:experience() global:printMessage("XP totale: " .. xp) Copier if character:freeMode() then global:printMessage("Mode gratuit - Zones P2P inaccessibles") -- Utiliser uniquement les zones F2P else global:printSuccess("Abonne - Acces complet") local secondsLeft = character:getSecondsBeforeFreeMode() local days = math.floor(secondsLeft / 86400) global:printMessage("Abonnement: " .. days .. " jours restants") end Copier local agiBase = character:getAgilityBase() global:printMessage("Agilite investie: " .. agiBase) -- Calculer le cout pour monter l'agilite local cost = character:getCostAgility() local points = character:statsPoint() global:printMessage("Cout prochain point: " .. cost .. " (disponible: " .. points .. ")") Copier local chanceBase = character:getChanceBase() global:printMessage("Chance investie: " .. chanceBase) Copier local cost = character:getCostAgility() local available = character:statsPoint() if available >= cost then global:printMessage("Peut monter agilite (cout: " .. cost .. ")") character:UpgradeAgility(1) else global:printMessage("Pas assez de points (besoin: " .. cost .. ", a: " .. available .. ")") end Copier local cost = character:getCostChance() global:printMessage("Cout pour +1 chance: " .. cost) Copier local cost = character:getCostIntelligence() global:printMessage("Cout pour +1 intelligence: " .. cost) Copier local cost = character:getCostStrenght() global:printMessage("Cout pour +1 force: " .. cost) Copier local cost = character:getCostVitality() global:printMessage("Cout pour +1 vitalite: " .. cost) -- Generalement 1 Copier local cost = character:getCostWisdom() global:printMessage("Cout pour +1 sagesse: " .. cost) -- Generalement 3 Copier local intelBase = character:getIntelligenceBase() global:printMessage("Intelligence investie: " .. intelBase) Copier local seconds = character:getSecondsBeforeFreeMode() if seconds > 0 then local days = math.floor(seconds / 86400) local hours = math.floor((seconds % 86400) / 3600) global:printMessage("Abonnement: " .. days .. " jours et " .. hours .. " heures") if days < 3 then global:printError("Abonnement expire bientot!") end else global:printMessage("Compte non abonne") end Copier local spellId = 12345 local minLevel = character:getSpellMinPlayerLevel(spellId) if minLevel > 0 then if character:level() >= minLevel then global:printSuccess("Sort disponible (niveau " .. minLevel .. " requis)") else global:printMessage("Sort bloque - Niveau " .. minLevel .. " requis") end else global:printError("Sort non trouve") end Copier local variantId = 12345 if character:getSpellVariant(variantId) then global:printSuccess("Variante obtenue!") else global:printError("Impossible d'obtenir la variante") -- Soit deja possedee, soit niveau insuffisant end Copier local stats = character:getStats() -- Acces aux stats detaillees global:printMessage("Force: " .. stats.strength.base .. " (+" .. stats.strength.objectsAndMountBonus .. " equip)") global:printMessage("PA: " .. stats.actionPoints) global:printMessage("PM: " .. stats.movementPoints) global:printMessage("Portee: " .. stats.range.base) global:printMessage("Invocations max: " .. stats.summonableCreaturesBoost.base) Copier local status = character:getStatus() global:printMessage("Statut actuel: " .. status) -- Verifier si disponible pour groupe if status == "Disponible" then global:printMessage("Pret a rejoindre un groupe") end Copier local strBase = character:getStrenghtBase() global:printMessage("Force investie: " .. strBase) Copier -- Image par defaut (face, 150x220) local url = character:getURLBodySkin() global:printMessage("URL: " .. url) -- Image personnalisee local urlCustom = character:getURLBodySkin(1, 300, 400, 2) Copier -- Avatar 32x32 local avatar = character:getURLFaceSkin() -- Portrait plus grand local portrait = character:getURLFaceSkin(3, 64, 64, 1) Copier local vitaBase = character:getVitalityBase() global:printMessage("Vitalite investie: " .. vitaBase) Copier local wisdomBase = character:getWisdomBase() global:printMessage("Sagesse investie: " .. wisdomBase) Copier local charId = character:id() global:printMessage("ID personnage: " .. charId) -- Utile pour verifier si c'est un personnage specifique if charId == 123456789 then global:printMessage("Personnage principal detecte") end Copier local identifier = character:identifier() global:printMessage("Identifiant: " .. identifier) Copier if character:isInFight() then global:printMessage("En combat - actions de combat uniquement") else global:printMessage("Hors combat - deplacement possible") end Copier local kamas = character:kamas() global:printMessage("Kamas: " .. kamas) -- Formater pour affichage local function formatKamas(k) if k >= 1000000 then return string.format("%.1fM", k / 1000000) elseif k >= 1000 then return string.format("%.1fK", k / 1000) end return tostring(k) end global:printMessage("Fortune: " .. formatKamas(kamas) .. " kamas") Copier local level = character:level() global:printMessage("Niveau: " .. level) if level >= 200 then global:printSuccess("Niveau maximum atteint!") elseif level >= 100 then global:printMessage("Acces aux zones haut niveau") end Copier local hp = character:lifePoints() local maxHp = character:maxLifePoints() global:printMessage("Vie: " .. hp .. "/" .. maxHp) Copier local hpPercent = character:lifePointsP() global:printMessage("Vie: " .. hpPercent .. "%") -- Verifier si regeneration necessaire if hpPercent < 50 then global:printError("Vie basse! Regeneration conseillee.") elseif hpPercent < 80 then global:printMessage("Vie moyenne") else global:printSuccess("Vie OK") end Copier local maxEnergy = character:maxEnergyPoints() global:printMessage("Energie max: " .. maxEnergy) Copier local maxHp = character:maxLifePoints() global:printMessage("PV max: " .. maxHp) Copier local name = character:name() global:printMessage("Personnage: " .. name) -- Utiliser pour l'alias global:editAlias(name, true) Copier local nick = character:nickname() global:printMessage("Tag: " .. nick) -- Exemple: "MonPseudo#1234" Copier -- Attention: action irreversible! if global:askQuestion("Voulez-vous vraiment reset vos stats?") then character:resetStats() global:printSuccess("Stats reinitialisees!") global:printMessage("Points a redistribuer: " .. character:statsPoint()) end Copier -- Apres avoir demande le code local code = global:askInput("Code Shield:", "Validation") character:sendShieldCode(code) -- Le bot va se reconnecter automatiquement Copier character:sendShieldCodeNew("123456", apiKey) Copier local server = character:server() global:printMessage("Serveur: " .. server) Copier local serverId = character:serverId() global:printMessage("ID serveur: " .. serverId) Copier local serverName = character:serverName() global:printMessage("Connecte sur: " .. serverName) Copier local isFemale = character:sex() if isFemale then global:printMessage("Personnage feminin") else global:printMessage("Personnage masculin") end Copier local points = character:statsPoint() global:printMessage("Points disponibles: " .. points) -- Investir automatiquement if points > 0 then -- Exemple: full vitalite character:UpgradeVitality(points) global:printSuccess("Points investis en vitalite!") end Copier if character:trusted() then global:printSuccess("Compte de confiance") else global:printMessage("Compte non verifie") end Copier local points = character:statsPoint() local cost = character:getCostAgility() -- Investir tous les points disponibles if points >= cost then character:UpgradeAgility(points) global:printSuccess("Points investis en agilite!") end Copier character:UpgradeChance(100) -- Investir 100 points en chance Copier character:UpgradeIntelligence(100) -- Investir 100 points en intelligence Copier character:UpgradeStrenght(100) -- Investir 100 points en force Copier -- Investir tous les points en vitalite local points = character:statsPoint() if points > 0 then character:UpgradeVitality(points) global:printSuccess("+" .. points .. " vitalite!") end Copier -- La sagesse coute 3 points pour 1 local points = character:statsPoint() if points >= 3 then character:UpgradeWisdom(points) -- Utiliser tous les points end --- # aggression | Snowbot Docs **🎮Méthode** Copier Signature: map:aggression(minLevel, maxLevel, delay) ### [hashtag](https://docs.snowbot.eu/methodes/navigation/map/aggression#aggression) aggression Parcourt tous les acteurs de type GameRolePlayCharacterInformations sur la carte et attaque les joueurs dont le niveau (calculé comme alignmentInfos.characterPower - contextualId) est compris dans la plage spécifiée. Envoie GameRolePlayPlayerFightRequestMessage avec friendly=false pour chaque cible valide. Paramètres: Nom Type Description `minLevel` `number` Niveau minimum des cibles (inclus) `maxLevel` `number` Niveau maximum des cibles (inclus) `delay` `number` Délai en ms entre chaque tentative d'agression Exemple: Copier -- Agresser les joueurs niveau 50-100 avec 2 secondes entre chaque map:aggression(50, 100, 2000) -- Agresser tous les joueurs (niveau 1 a 200) map:aggression(1, 200, 1500) circle-exclamation Note: Fonctionne uniquement sur les serveurs PvP et en zone d'agression. targetCellId est mis a -1. [Précédentmapchevron-left](https://docs.snowbot.eu/methodes/navigation/map) [SuivantcellDistancechevron-right](https://docs.snowbot.eu/methodes/navigation/map/celldistance) Mis à jour il y a 2 mois --- # changeMap | Snowbot Docs **🎮Méthode** Copier map:changeMap(Direction) Change de carte dans la direction spécifiée. Appelle la fonction FullAcces.changeMap() qui gère le déplacement vers le bord de la carte et le changement de map. Les directions valides sont: "top" (nord/haut), "bottom" (sud/bas), "left" (ouest/gauche), "right" (est/droite). Paramètres: Nom Type Description `Direction` `string` Direction: "top", "bottom", "left", ou "right" Exemple: Copier -- Aller vers le nord map:changeMap("top") -- Parcourir les 4 directions local directions = {"top", "right", "bottom", "left"} for _, dir in ipairs(directions) do map:changeMap(dir) global:delay(1000) end circle-info Note: Le changement de map est asynchrone. Utiliser listenChange()/hasChanged() pour attendre la fin. [PrécédentcellIdToInteractivechevron-left](https://docs.snowbot.eu/methodes/navigation/map/cellidtointeractive-1) [SuivantcheckMonsterAmountConstraintschevron-right](https://docs.snowbot.eu/methodes/navigation/map/checkmonsteramountconstraints) Mis à jour il y a 2 mois --- # map | Snowbot Docs [aggressionchevron-right](https://docs.snowbot.eu/methodes/navigation/map/aggression) [cellDistancechevron-right](https://docs.snowbot.eu/methodes/navigation/map/celldistance) [cellIdToInteractivechevron-right](https://docs.snowbot.eu/methodes/navigation/map/cellidtointeractive) [cellIdToInteractivechevron-right](https://docs.snowbot.eu/methodes/navigation/map/cellidtointeractive-1) [changeMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/changemap) [checkMonsterAmountConstraintschevron-right](https://docs.snowbot.eu/methodes/navigation/map/checkmonsteramountconstraints) [closestzaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/closestzaap) [containsArchichevron-right](https://docs.snowbot.eu/methodes/navigation/map/containsarchi) [countPlayerschevron-right](https://docs.snowbot.eu/methodes/navigation/map/countplayers) [currentAreachevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentarea) [currentAreaIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentareaid) [currentAreaLevelchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentarealevel) [currentCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentcell) [currentMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentmap) [currentMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentmapid) [currentSubAreachevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentsubarea) [currentSubAreaIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentsubareaid) [doorchevron-right](https://docs.snowbot.eu/methodes/navigation/map/door) [fightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/fight) [forceFightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/forcefight) [gatherchevron-right](https://docs.snowbot.eu/methodes/navigation/map/gather) [getAdjacentCellschevron-right](https://docs.snowbot.eu/methodes/navigation/map/getadjacentcells) [getArchiMonsterchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getarchimonster) [getDistancechevron-right](https://docs.snowbot.eu/methodes/navigation/map/getdistance) [getMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getmap) [GetMapIdFromCoordschevron-right](https://docs.snowbot.eu/methodes/navigation/map/getmapidfromcoords) [getNearestZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getnearestzaap) [getNearestZaap2chevron-right](https://docs.snowbot.eu/methodes/navigation/map/getnearestzaap2) [getPathDistancechevron-right](https://docs.snowbot.eu/methodes/navigation/map/getpathdistance) [getWalkableCellschevron-right](https://docs.snowbot.eu/methodes/navigation/map/getwalkablecells) [getXchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getx) [getYchevron-right](https://docs.snowbot.eu/methodes/navigation/map/gety) [gotomapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/gotomap) [hasChangedchevron-right](https://docs.snowbot.eu/methodes/navigation/map/haschanged) [haveThisZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/havethiszaap) [interactiveIdToCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/interactiveidtocell) [isHandToHandchevron-right](https://docs.snowbot.eu/methodes/navigation/map/ishandtohand) [isPlayerOnMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/isplayeronmap) [isWalkablechevron-right](https://docs.snowbot.eu/methodes/navigation/map/iswalkable) [isWalkableFightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/iswalkablefight) [knownZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/knownzaap) [launchFightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/launchfight) [listenChangechevron-right](https://docs.snowbot.eu/methodes/navigation/map/listenchange) [loadMovechevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadmove) [loadMoveToCoordchevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadmovetocoord) [loadMoveToMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadmovetomapid) [loadRoadToMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadroadtomapid) [lockedHousechevron-right](https://docs.snowbot.eu/methodes/navigation/map/lockedhouse) [lockedStoragechevron-right](https://docs.snowbot.eu/methodes/navigation/map/lockedstorage) [monsterGroupschevron-right](https://docs.snowbot.eu/methodes/navigation/map/monstergroups) [moveNextchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movenext) [moveRoadNextchevron-right](https://docs.snowbot.eu/methodes/navigation/map/moveroadnext) [moveToCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetocell) [moveTowardchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetoward) [moveTowardMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetowardmap) [moveTowardMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetowardmapid) [neighbourIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/neighbourid) [onCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/oncell) [onMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/onmap) [playerschevron-right](https://docs.snowbot.eu/methodes/navigation/map/players) [resetCustomObstacleschevron-right](https://docs.snowbot.eu/methodes/navigation/map/resetcustomobstacles) [saveZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/savezaap) [sendMapRequestchevron-right](https://docs.snowbot.eu/methodes/navigation/map/sendmaprequest) [setCustomObstacleschevron-right](https://docs.snowbot.eu/methodes/navigation/map/setcustomobstacles) [setSpeedMultiplierchevron-right](https://docs.snowbot.eu/methodes/navigation/map/setspeedmultiplier) [ToZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/tozaap) [useByIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/usebyid) [PrécédentNavigationchevron-left](https://docs.snowbot.eu/methodes/navigation) [Suivantaggressionchevron-right](https://docs.snowbot.eu/methodes/navigation/map/aggression) Mis à jour il y a 2 mois --- # cellDistance | Snowbot Docs **🎮Méthode** Copier map:cellDistance(cell1, cell2) Calcule la distance entre deux cellules en utilisant MapPoint.DistanceToCell(). Crée deux objets MapPoint à partir des IDs de cellules et calcule la distance géométrique sur la grille isométrique de Dofus. Paramètres: Nom Type Description `cell1` `number` ID de la première cellule (0-559) `cell2` `number` ID de la deuxième cellule (0-559) Retourne: `number` - Distance en nombre de cellules Exemple: Copier local myCell = map:currentCell() local targetCell = 300 local dist = map:cellDistance(myCell, targetCell) global:printMessage("Distance: " .. dist .. " cellules") -- Verifier si a portee d'un sort local spellRange = 5 if dist <= spellRange then global:printSuccess("Cible a portee!") end [Précédentaggressionchevron-left](https://docs.snowbot.eu/methodes/navigation/map/aggression) [SuivantcellIdToInteractivechevron-right](https://docs.snowbot.eu/methodes/navigation/map/cellidtointeractive) Mis à jour il y a 2 mois --- # cellIdToInteractive | Snowbot Docs **🎮Méthode** Copier map:cellIdToInteractive(Cellid) Recherche si une cellule contient un élément interactif (porte, zaap, ressource, etc.). Utilise D2Pparsing.Getdoor() avec les données de la carte (\_everMap et \_mapcomp) pour trouver l'ID de l'élément. Paramètres: Nom Type Description `Cellid` `number` ID de la cellule a vérifier (0-559) Retourne: `number` - ID de l'élément interactif, ou -1 si aucun élément sur cette cellule Exemple: Copier local cellId = 256 local interactiveId = map:cellIdToInteractive(cellId) if interactiveId > 0 then global:printMessage("Element interactif ID: " .. interactiveId) -- Utiliser l'element map:useById(interactiveId, 0) else global:printMessage("Pas d'element interactif sur cette cellule") end [PrécédentcellIdToInteractivechevron-left](https://docs.snowbot.eu/methodes/navigation/map/cellidtointeractive) [SuivantchangeMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/changemap) Mis à jour il y a 2 mois --- # cellIdToInteractive | Snowbot Docs **🎮Méthode** Copier map:cellIdToInteractive(Cellid) Recherche si une cellule contient un élément interactif (porte, zaap, ressource, etc.). Utilise D2Pparsing.Getdoor() avec les données de la carte (\_everMap et \_mapcomp) pour trouver l'ID de l'élément. Paramètres: Nom Type Description `Cellid` `number` ID de la cellule a vérifier (0-559) Retourne: `number` - ID de l'élément interactif, ou -1 si aucun élément sur cette cellule Exemple: Copier local cellId = 256 local interactiveId = map:cellIdToInteractive(cellId) if interactiveId > 0 then global:printMessage("Element interactif ID: " .. interactiveId) -- Utiliser l'element map:useById(interactiveId, 0) else global:printMessage("Pas d'element interactif sur cette cellule") end [PrécédentcellDistancechevron-left](https://docs.snowbot.eu/methodes/navigation/map/celldistance) [SuivantcellIdToInteractivechevron-right](https://docs.snowbot.eu/methodes/navigation/map/cellidtointeractive-1) Mis à jour il y a 2 mois --- # checkMonsterAmountConstraints | Snowbot Docs **🎮Méthode** Copier map:checkMonsterAmountConstraints(monsterGroup) Vérifie si un groupe de monstres respecte les contraintes de quantité définies dans amountConstraints. Pour chaque monstre du groupe, compte les occurrences par ID et vérifie que le nombre est compris entre MinAmount et MaxAmount de chaque contrainte applicable. Paramètres: Nom Type Description `monsterGroup` `GroupMonster` Objet GroupMonster contenant la liste des monstres Retourne: `boolean` - true si toutes les contraintes sont respectées, false sinon Exemple: Copier local groups = map:monsterGroups() for _, group in ipairs(groups) do if map:checkMonsterAmountConstraints(group) then global:printSuccess("Groupe valide: " .. #group.monsters .. " monstres") else global:printMessage("Groupe ignore (contraintes non respectees)") end end circle-exclamation Note: Retourne true si aucune contrainte n'est définie (amountConstraints vide). [PrécédentchangeMapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/changemap) [Suivantclosestzaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/closestzaap) Mis à jour il y a 2 mois --- # currentCell | Snowbot Docs **🎮Méthode** Copier map:currentCell() Retourne l'ID de la cellule sur laquelle se trouve actuellement le personnage. La valeur est lue directement depuis PacketAnalyser.cellid. Les cellules vont de 0 a 559 sur une carte Dofus standard. Retourne: `number` - ID de la cellule actuelle (0-559) Exemple: Copier local cell = map:currentCell() global:printMessage("Position: cellule " .. cell) -- Verifier si sur une cellule specifique if cell == 256 then global:printMessage("Au centre de la carte!") end [PrécédentcurrentAreaLevelchevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentarealevel) [SuivantcurrentMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentmap) Mis à jour il y a 2 mois --- # containsArchi | Snowbot Docs **🎮Méthode** Copier map:containsArchi() Vérifie si la carte actuelle contient un archimonstre en appelant getArchiMonster() et en vérifiant si la liste retournée n'est pas vide. Les archimonstres sont identifiés par leurs IDs spécifiques (liste de ~300 IDs dans Archimonster). Signature: Retourne: `boolean` - true si au moins un archimonstre est présent sur la carte Exemple: Copier if map:containsArchi() then global:printSuccess("ARCHIMONSTRE DETECTE!") global:playAudio("alert.wav") local archis = map:getArchiMonster() for _, archiId in ipairs(archis) do global:printMessage("Archi ID: " .. archiId) end end [Précédentclosestzaapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/closestzaap) [SuivantcountPlayerschevron-right](https://docs.snowbot.eu/methodes/navigation/map/countplayers) Mis à jour il y a 2 mois --- # currentAreaLevel | Snowbot Docs **🎮Méthode** Copier map:currentAreaLevel() Retourne le niveau recommandé de la zone actuelle en utilisant D2Oparsing.getnamecity3() avec l'Areaid du PacketAnalyser. Retourne: `string` - Niveau recommandé de la zone Exemple: Copier local level = map:currentAreaLevel() global:printMessage("Niveau recommande: " .. level) -- Verifier si la zone est adaptee au niveau du personnage local charLevel = character:level() if tonumber(level) and charLevel < tonumber(level) - 20 then global:printError("Zone trop difficile!") end [PrécédentcurrentAreaIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentareaid) [SuivantcurrentCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentcell) Mis à jour il y a 2 mois --- # currentMapId | Snowbot Docs Copier map:currentMapId() Retourne l'identifiant unique de la carte actuelle (PacketAnalyser.mapid). Cet ID est un nombre qui identifie de manière unique chaque carte du jeu. Retourne: `number` - ID unique de la carte (Double converti en Integer) Exemple: Copier local mapId = map:currentMapId() global:printMessage("Map ID: " .. mapId) -- Sauvegarder pour y revenir plus tard global:addInMemory("lastMapId", mapId) [PrécédentcurrentMapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentmap) [SuivantcurrentSubAreachevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentsubarea) Mis à jour il y a 2 mois --- # currentMap | Snowbot Docs **🎮Méthode** Copier map:currentMap() Retourne les coordonnées de la carte actuelle au format "x,y". Concatène PacketAnalyser.\_posX et \_posY avec une virgule. Retourne: `string` - Coordonnees au format "x,y" (ex: "3,-5") Exemple: Copier local coords = map:currentMap() global:printMessage("Position: [" .. coords .. "]") -- Parser les coordonnees local x, y = coords:match("([^,]+),([^,]+)") global:printMessage("X=" .. x .. ", Y=" .. y) [PrécédentcurrentCellchevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentcell) [SuivantcurrentMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentmapid) Mis à jour il y a 2 mois --- # closestzaap | Snowbot Docs **🎮Méthodes** Copier map:closestzaap(mapId, forbidden) Alias de getNearestZaap(). Trouve le zaap connu le plus proche d'une carte cible en calculant la distance à vol d'oiseau pour chaque zaap, puis en vérifiant l'accessibilité via le pathfinder. Paramètres: Nom Type Description `mapId` `number` ID de la carte de destination `forbidden` `table` Liste optionnelle des mapIds de zaaps a exclure Retourne: `number` - MapId du zaap le plus proche, 0 si aucun trouve, -1 si deja sur place Exemple: Copier local targetMap = 123456789 local nearestZaap = map:closestzaap(targetMap) if nearestZaap > 0 then map:ToZaap(nearestZaap) elseif nearestZaap == -1 then global:printMessage("Deja sur la carte cible!") end [PrécédentcheckMonsterAmountConstraintschevron-left](https://docs.snowbot.eu/methodes/navigation/map/checkmonsteramountconstraints) [SuivantcontainsArchichevron-right](https://docs.snowbot.eu/methodes/navigation/map/containsarchi) Mis à jour il y a 2 mois --- # currentAreaId | Snowbot Docs **🎮Méthode** Copier map:currentAreaId(mapId) Retourne l'ID numérique de la zone. Avec un mapId, utilise GetMapPosition pour obtenir SubAreaId. Sans paramètre, retourne directement l'Areaid stocké dans PacketAnalyser. Paramètres: Nom Type Description `mapId` `number` ID de la carte (optionnel) Retourne: `number` - ID de la zone/sous-zone Exemple: Copier local areaId = map:currentAreaId() global:printMessage("Area ID: " .. areaId) [PrécédentcurrentAreachevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentarea) [SuivantcurrentAreaLevelchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentarealevel) Mis à jour il y a 2 mois --- # currentSubArea | Snowbot Docs **🎮Méthode** Copier map:currentSubArea(mapId) Retourne le nom de la sous-zone. Avec un mapId, utilise D2Oparsing.getnamecityByMapid(). Sans paramètre, utilise getnamecity() avec l'Areaid actuel. Retourne une chaîne vide en cas d'erreur. Paramètres: Nom Type Description `mapId` `number` ID de la carte (optionnel) Retourne: `string` - Nom de la sous-zone Exemple: Copier local subArea = map:currentSubArea() global:printMessage("Sous-zone: " .. subArea) [PrécédentcurrentMapIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentmapid) [SuivantcurrentSubAreaIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentsubareaid) Mis à jour il y a 2 mois --- # fight | Snowbot Docs **🎮Méthode** Copier map:fight() Engage le combat avec un groupe de monstres valide sur la carte. Lit les variables globales Lua MIN\_MONSTERS, MAX\_MONSTERS, FORCE\_MONSTERS et FORBIDDEN\_MONSTERS pour configurer les contraintes. Appelle ensuite MoveToFight() qui trouve un groupe valide et lance le combat. Attend 2 secondes après le lancement réussi. Exemple: Copier -- Configuration des contraintes MIN_MONSTERS = 2 MAX_MONSTERS = 6 FORBIDDEN_MONSTERS = {123, 456} -- IDs a eviter -- Lancer le combat map:fight() Note: Ne fonctionne que si le compte est chef d'equipe ou pas en equipe. Utilise combatrefused pour eviter les groupes deja refuses. [Précédentdoorchevron-left](https://docs.snowbot.eu/methodes/navigation/map/door) [SuivantforceFightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/forcefight) Mis à jour il y a 2 mois --- # forceFight | Snowbot Docs **🎮Méthode** Copier map:forceFight() Force le combat en ignorant certaines contraintes. Active le flag forceSomething, vide la liste combatrefused, puis tente MoveToFight(). Si aucun monstre n'est disponible immediatement, attend l'apparition d'un nouveau groupe (GameRolePlayShowActorMessage) jusqu'a 10 minutes. Exemple: Copier -- Forcer un combat meme si les contraintes ne sont pas parfaites map:forceFight() circle-exclamation Note: Peut attendre tres longtemps si aucun monstre n'apparait. Utilise SuspendScriptUntilByNameMultiplePackets avec timeout de 600 secondes. [Précédentfightchevron-left](https://docs.snowbot.eu/methodes/navigation/map/fight) [Suivantgatherchevron-right](https://docs.snowbot.eu/methodes/navigation/map/gather) Mis à jour il y a 2 mois --- # door | Snowbot Docs **🎮Méthode** Copier map:door(Cellid) Utilise une porte ou un élément interactif sur la cellule spécifiée. Appelle directement FullAcces.useDoor() qui gère le déplacement vers la cellule et l'interaction. Paramètres: Nom Type Description `Cellid` `number` ID de la cellule contenant la porte/élément (0-559) Exemple: Copier -- Utiliser une porte sur la cellule 256 map:door(256) global:delay(1000) -- Attendre le changement de carte -- Trouver et utiliser une porte local doorCell = map:interactiveIdToCell(123) if doorCell > 0 then map:door(doorCell) end [PrécédentcurrentSubAreaIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentsubareaid) [Suivantfightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/fight) Mis à jour il y a 2 mois --- # currentSubAreaId | Snowbot Docs **🎮Méthode** Copier map:currentSubAreaId(mapId) Retourne l'ID de la sous-zone. Avec un mapId, utilise D2Oparsing.getnamecityByMapid2(). Sans paramètre, utilise getnamecity2() avec l'Areaid actuel. Paramètres: Nom Type Description `mapId` `number` ID de la carte (optionnel) Retourne: `number` - ID de la sous-zone Exemple: Copier local subAreaId = map:currentSubAreaId() global:printMessage("SubArea ID: " .. subAreaId) [PrécédentcurrentSubAreachevron-left](https://docs.snowbot.eu/methodes/navigation/map/currentsubarea) [Suivantdoorchevron-right](https://docs.snowbot.eu/methodes/navigation/map/door) Mis à jour il y a 2 mois --- # gather | Snowbot Docs **🎮Méthode** Copier map:gather() Récolte les ressources disponibles sur la carte selon la configuration. Appelle FullAcces.Gather() qui utilise la liste GATHER définie dans le script Lua pour déterminer quelles ressources récolter. Exemple: Copier -- Definir les ressources a recolter (IDs des items) GATHER = {289, 290, 291} -- Ble, Orge, Avoine -- Recolter map:gather() global:printMessage("Recolte terminee!") circle-exclamation Note: Nécessite d'avoir le métier approprié et les outils équipés. [PrécédentforceFightchevron-left](https://docs.snowbot.eu/methodes/navigation/map/forcefight) [SuivantgetAdjacentCellschevron-right](https://docs.snowbot.eu/methodes/navigation/map/getadjacentcells) Mis à jour il y a 2 mois --- # currentArea | Snowbot Docs **🎮Méthode** Copier map:currentArea(mapId) Retourne le nom de la zone (Area) pour une carte donnée. Si mapId est fourni, utilise GetMapPosition pour obtenir la SubAreaId, puis D2Oparsing.getnamecity2() pour le nom. Sans paramètre, utilise l'Areaid actuel du PacketAnalyser. Paramètres: Nom Type Description `mapId` `number` ID de la carte (optionnel, utilise la carte actuelle si omis) Retourne: `string` - Nom de la zone (ex: "Amakna", "Ile de Frigost", "Pandala") Exemple: Copier -- Zone actuelle local area = map:currentArea() global:printMessage("Zone: " .. area) -- Zone d'une carte specifique local otherArea = map:currentArea(123456789) global:printMessage("Zone cible: " .. otherArea) -- Verifier si sur une ile if area:find("Ile") or area:find("Île") then global:printMessage("Sur une ile!") end [PrécédentcountPlayerschevron-left](https://docs.snowbot.eu/methodes/navigation/map/countplayers) [SuivantcurrentAreaIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentareaid) Mis à jour il y a 2 mois --- # getDistance | Snowbot Docs **🎮Méthode** Copier map:getDistance(cell1, cell2) Calcule la distance entre deux cellules en utilisant MapPoint.DistanceToCell(). Identique a cellDistance() mais avec une implémentation interne qui crée les MapPoints à partir des IDs. Paramètres: Nom Type Description `cell1` `number` ID de la premiere cellule `cell2` `number` ID de la deuxieme cellule Retourne: `number` - Distance en cellules Exemple: Copier local distance = map:getDistance(100, 200) global:printMessage("Distance: " .. distance) [PrécédentgetArchiMonsterchevron-left](https://docs.snowbot.eu/methodes/navigation/map/getarchimonster) [SuivantgetMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getmap) Mis à jour il y a 2 mois --- # getNearestZaap | Snowbot Docs **🎮Méthode** Copier map:getNearestZaap(targetMapId, forbidden) Trouve le zaap le plus proche d'une carte cible. Ouvre d'abord l'interface zaap (element interactif 114), attend la liste des destinations (ZaapList), puis calcule la distance pour chaque zaap accessible. Trie par distance et retourne le premier zaap depuis lequel un chemin existe vers la cible. Paramètres: Nom Type Description `targetMapId` `number` ID de la carte de destination `forbidden` `table` Liste optionnelle des zaaps a exclure Retourne: `number` - MapId du zaap le plus proche, 0 si erreur/aucun trouve, -1 si deja sur place Exemple: Copier local targetMap = 123456789 local zaapId = map:getNearestZaap(targetMap) if zaapId > 0 then global:printSuccess("Zaap trouve: " .. zaapId) map:ToZaap(zaapId) elseif zaapId == 0 then global:printError("Aucun zaap accessible vers cette destination") end circle-exclamation Note: Nécessite d'être sur une carte avec un zaap. Timeout de 3 secondes pour attendre la liste des zaaps. [PrécédentGetMapIdFromCoordschevron-left](https://docs.snowbot.eu/methodes/navigation/map/getmapidfromcoords) [SuivantgetNearestZaap2chevron-right](https://docs.snowbot.eu/methodes/navigation/map/getnearestzaap2) Mis à jour il y a 2 mois --- # getMap | Snowbot Docs **🎮Méthode** Copier map:getMap() Retourne l'objet MapComplementaryInformationsDataMessage complet de la carte actuelle, casté en NetworkMessage. Contient toutes les informations: acteurs, éléments interactifs, maisons, etc. Retourne: `NetworkMessage` - Message reseau contenant toutes les donnees de la carte Exemple: Copier local mapData = map:getMap() -- Acceder aux donnees brutes de la carte [PrécédentgetDistancechevron-left](https://docs.snowbot.eu/methodes/navigation/map/getdistance) [SuivantGetMapIdFromCoordschevron-right](https://docs.snowbot.eu/methodes/navigation/map/getmapidfromcoords) Mis à jour il y a 2 mois --- # getX | Snowbot Docs **🎮Méthode** Copier map:getX(mapId) Retourne la coordonnee X d'une carte a partir de son ID. Interroge les donnees D2O (MapPositions) pour obtenir le champ "posX". Paramètres: Nom Type Description `mapId` `number` ID de la carte Retourne: `number` - Coordonnee X de la carte Exemple: Copier local mapId = map:currentMapId() local x = map:getX(mapId) local y = map:getY(mapId) global:printMessage("Position: [" .. x .. "," .. y .. "]") [PrécédentgetWalkableCellschevron-left](https://docs.snowbot.eu/methodes/navigation/map/getwalkablecells) [SuivantgetYchevron-right](https://docs.snowbot.eu/methodes/navigation/map/gety) Mis à jour il y a 2 mois --- # isHandToHand | Snowbot Docs **🎮Méthode** Copier map:isHandToHand(cellStart, cellEnd) Verifie si deux cellules sont au corps a corps (distance <= 1). Cree des MapPoints et utilise DistanceToCell() pour calculer la distance. Paramètres: Nom Type Description `cellStart` `number` ID de la premiere cellule `cellEnd` `number` ID de la deuxieme cellule Retourne: `boolean` - true si les cellules sont adjacentes (distance <= 1) Exemple: Copier local myCell = 256 local enemyCell = 257 if map:isHandToHand(myCell, enemyCell) then global:printSuccess("Au corps a corps!") else global:printMessage("Hors de portee CaC") end [PrécédentinteractiveIdToCellchevron-left](https://docs.snowbot.eu/methodes/navigation/map/interactiveidtocell) [SuivantisPlayerOnMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/isplayeronmap) Mis à jour il y a 2 mois --- # getAdjacentCells | Snowbot Docs **🎮Méthode** Copier map:getAdjacentCells(Cellid2) Calcule et retourne les 4 cellules adjacentes (diagonales) à une cellule donnée. Utilise la formule de la grille isométrique Dofus: la position dans la ligne détermine le décalage. Vérifie que chaque cellule adjacente est valide (0-559) et a distance <= 1. Paramètres: Nom Type Description `Cellid2` `number` ID de la cellule centrale (0-559) Retourne: `table` - Liste des IDs des cellules adjacentes (jusqu'a 4) Exemple: Copier local myCell = map:currentCell() local adjacent = map:getAdjacentCells(myCell) global:printMessage("Cellules adjacentes a " .. myCell .. ":") for _, cell in ipairs(adjacent) do global:printMessage(" - " .. cell) end circle-info Note: Retourne nil si Cellid2 est -1. Les cellules hors limites sont exclues. [Précédentgatherchevron-left](https://docs.snowbot.eu/methodes/navigation/map/gather) [SuivantgetArchiMonsterchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getarchimonster) Mis à jour il y a 2 mois --- # hasChanged | Snowbot Docs **🎮Méthode** Copier map:hasChanged() Verifie si la carte a change depuis le dernier appel a listenChange(). Lit le flag listChange du PacketAnalyser qui est mis a true lors d'un changement de carte. Retourne: `boolean` - true si la carte a change depuis listenChange() Exemple: Copier map:listenChange() -- Reset le flag map:changeMap("top") -- Attendre le changement while not map:hasChanged() do global:delay(100) end global:printSuccess("Changement de carte effectue!") [Précédentgotomapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/gotomap) [SuivanthaveThisZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/havethiszaap) Mis à jour il y a 2 mois --- # isPlayerOnMap | Snowbot Docs **🎮Méthode** Copier map:isPlayerOnMap(id) Verifie si un joueur avec un ID specifique (contextualId) est present sur la carte actuelle. Parcourt la liste des acteurs de \_mapcomp. Paramètres: Nom Type Description `id` `number` contextualId du joueur a chercher Retourne: `boolean` - true si le joueur est sur la carte Exemple: Copier local teamMemberId = 123456789 if map:isPlayerOnMap(teamMemberId) then global:printSuccess("Membre de l'equipe present!") else global:printMessage("En attente du membre...") end [PrécédentisHandToHandchevron-left](https://docs.snowbot.eu/methodes/navigation/map/ishandtohand) [SuivantisWalkablechevron-right](https://docs.snowbot.eu/methodes/navigation/map/iswalkable) Mis à jour il y a 2 mois --- # getPathDistance | Snowbot Docs **🎮Méthode** Copier map:getPathDistance(mapidStart, mapidEnd) Calcule la distance exacte en nombre de transitions (cartes à traverser) entre deux cartes. Utilise WorldPathFinder.CheckIfPathExists() qui calcule et stocke le chemin, puis retourne CurrentPath.Count. Plus précis que la distance à vol d'oiseau. Paramètres: Nom Type Description `mapidStart` `number` ID de la carte de départ `mapidEnd` `number` ID de la carte d'arrivee Retourne: `number` - Nombre de cartes a traverser, 0 si meme carte, -1 si aucun chemin Exemple: Copier local start = map:currentMapId() local target = 123456789 local distance = map:getPathDistance(start, target) if distance >= 0 then global:printMessage("Distance: " .. distance .. " cartes a traverser") else global:printError("Aucun chemin trouve!") end [PrécédentgetNearestZaap2chevron-left](https://docs.snowbot.eu/methodes/navigation/map/getnearestzaap2) [SuivantgetWalkableCellschevron-right](https://docs.snowbot.eu/methodes/navigation/map/getwalkablecells) Mis à jour il y a 2 mois --- # getWalkableCells | Snowbot Docs **🎮Méthode** Copier map:getWalkableCells(hasPath) Retourne la liste de toutes les cellules accessibles (walkable) de la carte. Parcourt les 560 cellules (0-559) et utilise checkmap.IsWalkable(). Si hasPath=true, vérifie en plus qu'un chemin existe depuis la position actuelle en utilisant Pathfinder2. Paramètres: Nom Type Description `hasPath` `boolean` true pour verifier l'accessibilite reelle (avec pathfinding), false pour juste la propriete walkable Retourne: `table` - Liste des IDs de cellules accessibles Exemple: Copier -- Toutes les cellules walkables (rapide) local allWalkable = map:getWalkableCells(false) global:printMessage("Cellules walkables: " .. #allWalkable) -- Cellules reellement accessibles (plus lent mais precis) local reachable = map:getWalkableCells(true) global:printMessage("Cellules atteignables: " .. #reachable) circle-info Note: Avec hasPath=true, le calcul peut etre lent car il fait un pathfinding pour chaque cellule. [PrécédentgetPathDistancechevron-left](https://docs.snowbot.eu/methodes/navigation/map/getpathdistance) [SuivantgetXchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getx) Mis à jour il y a 2 mois --- # GetMapIdFromCoords | Snowbot Docs **🎮Méthode** Copier map:GetMapIdFromCoords(x, y) Convertit des coordonnées X,Y en ID de carte en utilisant D2Pparsing.GetMapIdFromCoords() avec la carte actuelle comme référence. Trouve la carte correspondante dans la meme zone. Paramètres: Nom Type Description `x` `number` Coordonnee X `y` `number` Coordonnee Y Retourne: `number` - ID de la carte aux coordonnees specifiees Exemple: Copier local mapId = map:GetMapIdFromCoords(3, -5) global:printMessage("Map ID pour [3,-5]: " .. mapId) -- Aller a cette carte map:loadMove(mapId) while map:moveNext() do global:delay(500) end [PrécédentgetMapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/getmap) [SuivantgetNearestZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/getnearestzaap) Mis à jour il y a 2 mois --- # countPlayers | Snowbot Docs **🎮Méthode** Copier map:countPlayers() Compte le nombre de joueurs (GameRolePlayCharacterInformations) présents sur la carte actuelle. Parcourt tous les acteurs de \_mapcomp.actors et incrémente le compteur pour chaque joueur trouvé. Retourne: `number` - Nombre de joueurs sur la carte (hors PNJ et monstres) Exemple: Copier local playerCount = map:countPlayers() global:printMessage("Joueurs sur la carte: " .. playerCount) -- Eviter les cartes trop frequentees if playerCount > 3 then global:printMessage("Trop de monde, changement de carte...") map:changeMap("top") end [PrécédentcontainsArchichevron-left](https://docs.snowbot.eu/methodes/navigation/map/containsarchi) [SuivantcurrentAreachevron-right](https://docs.snowbot.eu/methodes/navigation/map/currentarea) Mis à jour il y a 2 mois --- # haveThisZaap | Snowbot Docs **🎮Méthode** Copier map:haveThisZaap(zaapId) Verifie si un zaap specifique est dans la liste des zaaps connus du personnage (KnownZaapList). Paramètres: Nom Type Description `zaapId` `number` MapId du zaap a verifier Retourne: `boolean` - true si le zaap est connu/debloquer Exemple: Copier local frigostZaap = 54172969 if map:haveThisZaap(frigostZaap) then global:printSuccess("Zaap Frigost connu!") else global:printMessage("Zaap Frigost non decouvert") end [PrécédenthasChangedchevron-left](https://docs.snowbot.eu/methodes/navigation/map/haschanged) [SuivantinteractiveIdToCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/interactiveidtocell) Mis à jour il y a 2 mois --- # getNearestZaap2 | Snowbot Docs **🎮Méthode** Copier map:getNearestZaap2(targetMapId, forbidden) Version améliorée de getNearestZaap qui gère les iles spéciales. Détecte d'abord si la destination est sur une ile (Frigost, Pandala, Saharach, Otomai, Wabbits, Moon, Valonia) et retourne directement le zaap de l'ile si connu. Sinon, utilise getPathDistance() au lieu de la distance à vol d'oiseau pour un calcul plus précis. Paramètres: Nom Type Description `targetMapId` `number` ID de la carte de destination `forbidden` `table` Liste optionnelle des zaaps a exclure Retourne: `number` - MapId du zaap optimal, 0 si erreur, -1 si deja sur place Exemple: Copier -- Pour aller sur Frigost, retourne directement le zaap Frigost si connu local zaapId = map:getNearestZaap2(frigostMapId) if zaapId == -1 then global:printError("Vous n'avez pas le zaap de cette ile!") end circle-exclamation Note: Zaaps d'iles: Frigost=54172969, Pandala=207619076, Saharach=173278210, Otomai=154642, Wabbits=99615238, Moon=156762120, Valonia=223349001 [PrécédentgetNearestZaapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/getnearestzaap) [SuivantgetPathDistancechevron-right](https://docs.snowbot.eu/methodes/navigation/map/getpathdistance) Mis à jour il y a 2 mois --- # gotomap | Snowbot Docs **🎮Méthode** Copier map:gotomap(x, y) ou map:gotomap(mapId) Deplace automatiquement le personnage vers une destination en boucle jusqu'a l'arrivee. Version avec coordonnées: compare \_posX/\_posY avec x/y. Version avec mapId: compare mapid avec l'ID cible. Utilise moveToward() et attend hasChanged() entre chaque étape. NE PEUT PAS etre utilise pendant qu'un script est en cours (ScriptExecuting). Paramètres: Nom Type Description `x` `number` Coordonnee X destination (ou mapId si un seul parametre) `y` `number` Coordonnee Y destination (optionnel) Exemple: Copier -- Aller aux coordonnees [3,-5] map:gotomap(3, -5) -- Aller a une carte par son ID map:gotomap(123456789) circle-exclamation Note: ATTENTION: Ne fonctionne PAS pendant l'execution d'un script! Utiliser depuis la console uniquement. Ajoute un delai aleatoire entre les mouvements. [PrécédentgetYchevron-left](https://docs.snowbot.eu/methodes/navigation/map/gety) [SuivanthasChangedchevron-right](https://docs.snowbot.eu/methodes/navigation/map/haschanged) Mis à jour il y a 2 mois --- # getY | Snowbot Docs **🎮Méthode** Copier map:getY(mapId) Retourne la coordonnee Y d'une carte a partir de son ID. Interroge les donnees D2O (MapPositions) pour obtenir le champ "posY". Paramètres: Nom Type Description `mapId` `number` ID de la carte Retourne: `number` - Coordonnee Y de la carte Exemple: Copier local y = map:getY(123456789) global:printMessage("Y: " .. y) [PrécédentgetXchevron-left](https://docs.snowbot.eu/methodes/navigation/map/getx) [Suivantgotomapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/gotomap) Mis à jour il y a 2 mois --- # listenChange | Snowbot Docs **🎮Méthode** Copier map:listenChange() Reinitialise le flag de changement de carte (listChange = false). Doit etre appele avant une action qui change la carte, puis utiliser hasChanged() pour detecter quand le changement est effectif. Exemple: Copier -- Pattern standard pour attendre un changement de carte map:listenChange() map:changeMap("top") while not map:hasChanged() do global:delay(100) end global:printMessage("Nouvelle carte!") [PrécédentlaunchFightchevron-left](https://docs.snowbot.eu/methodes/navigation/map/launchfight) [SuivantloadMovechevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadmove) Mis à jour il y a 2 mois --- # getArchiMonster | Snowbot Docs **🎮Méthode** Copier map:getArchiMonster() Parcourt tous les groupes de monstres sur la carte et retourne les IDs des archimonstres trouvés. Compare les genericId de chaque monstre principal (mainCreatureLightInfos) avec la liste predefinies des ~300 IDs d'archimonstres. Retourne: `table` - Liste des IDs d'archimonstres presents sur la carte Exemple: Copier local archis = map:getArchiMonster() if #archis > 0 then global:printSuccess("Archimonstres trouves: " .. #archis) for _, id in ipairs(archis) do local name = d2data:objectFromD2O("Monsters", id).name global:printMessage(" - " .. name .. " (ID: " .. id .. ")") end end [PrécédentgetAdjacentCellschevron-left](https://docs.snowbot.eu/methodes/navigation/map/getadjacentcells) [SuivantgetDistancechevron-right](https://docs.snowbot.eu/methodes/navigation/map/getdistance) Mis à jour il y a 2 mois --- # interactiveIdToCell | Snowbot Docs **🎮Méthode** Copier map:interactiveIdToCell(elementId) Retourne la cellule sur laquelle se trouve un élément interactif. Utilise D2Pparsing.getcellidwithelementid() avec les données de la carte (\_everMap). Paramètres: Nom Type Description `elementId` `number` ID de l'element interactif Retourne: `number` - ID de la cellule contenant l'element Exemple: Copier local elementId = 12345 local cellId = map:interactiveIdToCell(elementId) if cellId > 0 then global:printMessage("Element sur cellule " .. cellId) map:moveToCell(cellId) end [PrécédenthaveThisZaapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/havethiszaap) [SuivantisHandToHandchevron-right](https://docs.snowbot.eu/methodes/navigation/map/ishandtohand) Mis à jour il y a 2 mois --- # isWalkable | Snowbot Docs **🎮Méthode** Copier map:isWalkable(cellId) Verifie si une cellule est accessible (pas un obstacle). Utilise checkmap.IsWalkable() qui verifie les proprietes de la cellule dans les donnees de la carte. Paramètres: Nom Type Description `cellId` `number` ID de la cellule (0-559) Retourne: `boolean` - true si la cellule est accessible, false si obstacle ou hors limites Exemple: Copier local targetCell = 256 if map:isWalkable(targetCell) then map:moveToCell(targetCell) else global:printError("Cellule " .. targetCell .. " inaccessible") end [PrécédentisPlayerOnMapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/isplayeronmap) [SuivantisWalkableFightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/iswalkablefight) Mis à jour il y a 2 mois --- # knownZaap | Snowbot Docs **🎮Méthode** Copier map:knownZaap() Retourne la liste complete des zaaps decouverts par le personnage (KnownZaapList du MITM). Chaque element est un mapId de zaap. Retourne: `table` - Liste des MapIds des zaaps connus Exemple: Copier local zaaps = map:knownZaap() global:printMessage("Zaaps decouverts: " .. #zaaps) for i, zaapId in ipairs(zaaps) do local x = map:getX(zaapId) local y = map:getY(zaapId) global:printMessage(i .. ". Zaap [" .. x .. "," .. y .. "]") end [PrécédentisWalkableFightchevron-left](https://docs.snowbot.eu/methodes/navigation/map/iswalkablefight) [SuivantlaunchFightchevron-right](https://docs.snowbot.eu/methodes/navigation/map/launchfight) Mis à jour il y a 2 mois --- # launchFight | Snowbot Docs **🎮Méthode** Copier map:launchFight() Lance directement un combat sans les verifications de fight(). Appelle FullAcces.MoveToFight() et retourne son resultat. Retourne: `boolean` - Resultat de MoveToFight (true si combat lance) Exemple: Copier if map:launchFight() then global:printSuccess("Combat lance!") end [PrécédentknownZaapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/knownzaap) [SuivantlistenChangechevron-right](https://docs.snowbot.eu/methodes/navigation/map/listenchange) Mis à jour il y a 2 mois --- # loadMoveToMapId | Snowbot Docs **🎮Méthode** Copier map:loadMoveToMapId(mapId) Charge un trajet vers une carte par son ID. Appelle directement WorldPathFinder.MoveTo() avec le mapId. Paramètres: Nom Type Description `mapId` `number` ID de la carte de destination Retourne: `boolean` - true si charge, false si erreur Exemple: Copier local destination = 123456789 if map:loadMoveToMapId(destination) then global:printSuccess("Trajet pret!") end [PrécédentloadMoveToCoordchevron-left](https://docs.snowbot.eu/methodes/navigation/map/loadmovetocoord) [SuivantloadRoadToMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadroadtomapid) Mis à jour il y a 2 mois --- # lockedHouse | Snowbot Docs **🎮Méthode** Copier map:lockedHouse(Cellid, Code, Pseudos) Entre dans une maison verrouillee par code. Si Pseudos est specifie, recherche la maison appartenant a ce joueur parmi les HouseOnMapInformations. Necessite un abonnement "optiControl" ou fullAccess. Paramètres: Nom Type Description `Cellid` `number` Cellule de la porte de la maison `Code` `string` Code d'acces a 4 chiffres `Pseudos` `string` Tag du proprietaire au format "pseudo#tag" (optionnel) Exemple: Copier -- Entrer avec le code map:lockedHouse(256, "1234") -- Entrer dans la maison de "MonPerso#1234" map:lockedHouse(256, "1234", "MonPerso#1234") circle-exclamation Note: Nécessite un abonnement premium. Affiche une erreur si le pseudo n'est pas trouve. [PrécédentloadRoadToMapIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/loadroadtomapid) [SuivantlockedStoragechevron-right](https://docs.snowbot.eu/methodes/navigation/map/lockedstorage) Mis à jour il y a 2 mois --- # isWalkableFight | Snowbot Docs **🎮Méthode** Copier map:isWalkableFight(cellId) Verifie si une cellule est accessible en mode combat. Utilise checkmap.IsWalkableFight() qui peut avoir des regles differentes de isWalkable (certaines cellules bloquees uniquement en combat). Paramètres: Nom Type Description `cellId` `number` ID de la cellule Retourne: `boolean` - true si accessible en combat Exemple: Copier -- En combat, verifier avant de se deplacer if map:isWalkableFight(targetCell) then -- Cellule OK pour le combat end [PrécédentisWalkablechevron-left](https://docs.snowbot.eu/methodes/navigation/map/iswalkable) [SuivantknownZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/knownzaap) Mis à jour il y a 2 mois --- # moveRoadNext | Snowbot Docs **🎮Méthode** Copier map:moveRoadNext() Identique a moveNext(). Execute la prochaine transition du trajet charge. Retourne: `boolean` - true si deplacement effectue Exemple: Copier while map:moveRoadNext() do global:delay(500) end [PrécédentmoveNextchevron-left](https://docs.snowbot.eu/methodes/navigation/map/movenext) [SuivantmoveToCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetocell) Mis à jour il y a 2 mois --- # lockedStorage | Snowbot Docs **🎮Méthode** Copier map:lockedStorage(Cellid, Code) Ouvre un coffre verrouille par code. Appelle useLockedStorage() qui gere l'interaction et l'entree du code. Si le coffre est occupe, attend 5 secondes et reessaie automatiquement. Necessite un abonnement premium. Paramètres: Nom Type Description `Cellid` `number` Cellule du coffre `Code` `string` Code d'acces Retourne: `boolean` - true si le coffre a ete ouvert Exemple: Copier if map:lockedStorage(256, "1234") then global:printSuccess("Coffre ouvert!") -- Deposer/retirer des objets... end circle-info Note: Recursif: reessaie automatiquement si coffre occupe. [PrécédentlockedHousechevron-left](https://docs.snowbot.eu/methodes/navigation/map/lockedhouse) [SuivantmonsterGroupschevron-right](https://docs.snowbot.eu/methodes/navigation/map/monstergroups) Mis à jour il y a 2 mois --- # moveNext | Snowbot Docs **🎮Méthode** Copier map:moveNext() Execute la prochaine etape du trajet charge. Recupere la transition suivante via WorldPathFinder.GetNextTransition() et l'execute selon son type: Interactive (useDoor), MapAction (moveToCell), Scroll/ScrollAction (east/nord/west/sud selon Direction). Signature: `map:moveNext()` Retourne: `boolean` - true si une etape a ete executee, false si fin du trajet ou erreur Exemple: Copier -- Pattern standard de deplacement if map:loadMove(destinationId) then while map:moveNext() do global:delay(500) -- Pause entre chaque carte end global:printSuccess("Destination atteinte!") end circle-info **Note :** Gère automatiquement les portes, les changements de carte par les bords et les actions de carte. [PrécédentmonsterGroupschevron-left](https://docs.snowbot.eu/methodes/navigation/map/monstergroups) [SuivantmoveRoadNextchevron-right](https://docs.snowbot.eu/methodes/navigation/map/moveroadnext) Mis à jour il y a 2 mois --- # loadRoadToMapId | Snowbot Docs **🎮Méthode** Copier map:loadRoadToMapId(fromMapId, toMapId) ou map:loadRoadToMapId(toMapId) Charge un trajet entre deux cartes (ou depuis la carte actuelle si un seul parametre). Avec deux parametres, utilise WorldPathFinder.MoveFrom(). Avec un parametre, utilise MoveTo(). Paramètres: Nom Type Description `fromMapId` `number` MapId de depart (optionnel) `toMapId` `number` MapId d'arrivee Retourne: `boolean` - true si le trajet a ete calcule Exemple: Copier -- Depuis la carte actuelle map:loadRoadToMapId(destinationId) -- Entre deux cartes specifiques map:loadRoadToMapId(startId, endId) [PrécédentloadMoveToMapIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/loadmovetomapid) [SuivantlockedHousechevron-right](https://docs.snowbot.eu/methodes/navigation/map/lockedhouse) Mis à jour il y a 2 mois --- # monsterGroups | Snowbot Docs **🎮Méthode** Copier map:monsterGroups() Retourne la liste des groupes de monstres presents sur la carte. Pour chaque GameRolePlayGroupMonsterInformations, cree un objet GroupMonster contenant la liste des Monster (id, level) et les informations du groupe (cellId, contextualId). Retourne: `table` - Liste d'objets GroupMonster avec: cellId, contextualId, monsters\[\] Exemple: Copier local groups = map:monsterGroups() global:printMessage("Groupes de monstres: " .. #groups) for i, group in ipairs(groups) do global:printMessage("Groupe " .. i .. " sur cellule " .. group.cellId) global:printMessage(" Monstres: " .. #group.monsters) for _, monster in ipairs(group.monsters) do global:printMessage(" - ID:" .. monster.id .. " Niv." .. monster.level) end end [PrécédentlockedStoragechevron-left](https://docs.snowbot.eu/methodes/navigation/map/lockedstorage) [SuivantmoveNextchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movenext) Mis à jour il y a 2 mois --- # moveToCell | Snowbot Docs * * * **🎮Méthode** Copier map:moveToCell(cellId) Deplace le personnage vers une cellule specifique sur la carte actuelle. Si syncMove est actif et que ce compte est chef d'equipe, synchronise le deplacement avec tous les membres (avec un delai de TimeTeamSync entre chaque). Appelle Gotocell() pour le deplacement reel. Paramètres: Nom Type Description `cellId` `number` ID de la cellule de destination (0-559) Exemple: Copier -- Deplacement simple map:moveToCell(256) -- Aller au centre de la carte map:moveToCell(280) circle-info **Note :** En mode équipe synchronisée, les mules suivent avec un délai. [PrécédentmoveRoadNextchevron-left](https://docs.snowbot.eu/methodes/navigation/map/moveroadnext) [SuivantmoveTowardchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetoward) Mis à jour il y a 2 mois --- # loadMove | Snowbot Docs **🎮Méthode** Copier map:loadMove(target) Charge un trajet vers une destination dans le WorldPathFinder. Peut prendre un mapId (Double) ou des coordonnées (x, y). Utilise D2Pparsing.GetMapIdFromCoords si des coordonnées sont fournies. Retourne false si aucun chemin n'existe. Paramètres: Nom Type Description `target` `number` MapId ou coordonnee X `y` `number` Coordonnee Y (optionnel) Retourne: `boolean` - true si le trajet a ete charge avec succes Exemple: Copier -- Charger par mapId if map:loadMove(123456789) then global:printSuccess("Trajet charge!") while map:moveNext() do global:delay(500) end end -- Charger par coordonnees if map:loadMove(3, -5) then -- ... end [PrécédentlistenChangechevron-left](https://docs.snowbot.eu/methodes/navigation/map/listenchange) [SuivantloadMoveToCoordchevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadmovetocoord) Mis à jour il y a 2 mois --- # moveTowardMapId | Snowbot Docs **🎮Méthode** Copier map:moveTowardMapId(mapId) Se deplace d'une carte vers une destination par son mapId. Recupere les coordonnees X,Y de la carte cible via getX/getY puis appelle moveTowardMap. Paramètres: Nom Type Description `mapId` `number` ID de la carte de destination Retourne: `boolean` - true si deplacement effectue Exemple: Copier map:moveTowardMapId(123456789) [PrécédentmoveTowardMapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/movetowardmap) [SuivantneighbourIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/neighbourid) Mis à jour il y a 2 mois --- # neighbourId | Snowbot Docs **🎮Méthode** Copier map:neighbourId(direction) Retourne l'ID de la carte adjacente dans une direction donnee. Lit les proprietes Idtop, Idbottom, Idleft, Idright du checkmap. Paramètres: Nom Type Description `direction` `string` "top", "bottom", "left" ou "right" Retourne: `number` - ID de la carte voisine, 0 si pas de voisin Exemple: Copier local topMapId = map:neighbourId("top") if topMapId > 0 then global:printMessage("Carte au nord: " .. topMapId) else global:printMessage("Pas de sortie vers le nord") end [PrécédentmoveTowardMapIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/movetowardmapid) [SuivantonCellchevron-right](https://docs.snowbot.eu/methodes/navigation/map/oncell) Mis à jour il y a 2 mois --- # sendMapRequest | Snowbot Docs **🎮Méthode** Copier map:sendMapRequest() Envoie une requete de mise a jour des informations de la carte au serveur (MapInformationsRequestMessage). Utile pour forcer un rafraichissement des donnees. Exemple: Copier map:sendMapRequest() global:delay(500) -- Attendre la reponse [PrécédentsaveZaapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/savezaap) [SuivantsetCustomObstacleschevron-right](https://docs.snowbot.eu/methodes/navigation/map/setcustomobstacles) Mis à jour il y a 2 mois --- # onCell | Snowbot Docs **🎮Méthode** Copier map:onCell(cellId) Verifie si le personnage est exactement sur la cellule specifiee. Compare PacketAnalyser.cellid avec le parametre. Paramètres: Nom Type Description `cellId` `number` ID de la cellule a verifier Retourne: `boolean` - true si le personnage est sur cette cellule Exemple: Copier if map:onCell(256) then global:printMessage("Sur la cellule 256!") map:door(256) -- Utiliser l'element sur cette cellule end [PrécédentneighbourIdchevron-left](https://docs.snowbot.eu/methodes/navigation/map/neighbourid) [SuivantonMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/onmap) Mis à jour il y a 2 mois --- # onMap | Snowbot Docs **🎮Méthode** Copier map:onMap(Coords) Verifie si le personnage est sur une carte specifique. Accepte soit des coordonnees "x,y" soit un mapId en string. Compare avec \_posX,\_posY ou mapid. Paramètres: Nom Type Description `Coords` `string` Coordonnees "x,y" ou mapId en string Retourne: `boolean` - true si sur la carte specifiee Exemple: Copier if map:onMap("3,-5") then global:printMessage("Sur la carte [3,-5]!") end -- Par mapId if map:onMap("123456789") then global:printMessage("Sur la bonne carte!") end [PrécédentonCellchevron-left](https://docs.snowbot.eu/methodes/navigation/map/oncell) [Suivantplayerschevron-right](https://docs.snowbot.eu/methodes/navigation/map/players) Mis à jour il y a 2 mois --- # resetCustomObstacles | Snowbot Docs **🎮Méthode** Copier map:resetCustomObstacles() Reinitialise les obstacles personnalises de la carte en appelant \_everMap.ResetObstacles(). Annule les modifications faites par setCustomObstacles. Exemple: Copier -- Apres avoir fini avec les obstacles custom map:resetCustomObstacles() [Précédentplayerschevron-left](https://docs.snowbot.eu/methodes/navigation/map/players) [SuivantsaveZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/savezaap) Mis à jour il y a 2 mois --- # players | Snowbot Docs **🎮Méthode** Copier map:players() Retourne la liste des joueurs (GameRolePlayCharacterInformations) presents sur la carte. Filtre les acteurs de \_mapcomp.actors pour ne garder que les joueurs. Retourne: `table` - Liste d'objets GameRolePlayCharacterInformations Exemple: Copier local players = map:players() global:printMessage("Joueurs: " .. #players) for _, player in ipairs(players) do global:printMessage(" - " .. player.name) end [PrécédentonMapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/onmap) [SuivantresetCustomObstacleschevron-right](https://docs.snowbot.eu/methodes/navigation/map/resetcustomobstacles) Mis à jour il y a 2 mois --- # moveToward | Snowbot Docs **🎮Méthode** Copier map:moveToward(target) Fait UN PAS vers une destination (une seule transition). Charge le trajet via loadRoadToMapId() ou loadMove() puis execute moveRoadNext(). Peut prendre un mapId ou des coordonnees (x, y). Paramètres: Nom Type Description `target` `number` MapId ou coordonnee X `y` `number` Coordonnee Y (optionnel) Retourne: `boolean` - true si le pas a ete effectue Exemple: Copier -- Un pas vers une carte if map:moveToward(123456789) then global:printMessage("Avance d'une carte...") end -- Un pas vers des coordonnees map:moveToward(3, -5) [PrécédentmoveToCellchevron-left](https://docs.snowbot.eu/methodes/navigation/map/movetocell) [SuivantmoveTowardMapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetowardmap) Mis à jour il y a 2 mois --- # moveTowardMap | Snowbot Docs **🎮Méthode** Copier map:moveTowardMap(x, y) Se deplace d'une carte vers des coordonnees, en choisissant aleatoirement parmi les directions valides. Compare la position actuelle (\_posX, \_posY) avec la destination et tente les directions appropriees. Retourne true si deja a destination. Paramètres: Nom Type Description `x` `number` Coordonnee X de destination `y` `number` Coordonnee Y de destination Retourne: `boolean` - true si deplacement reussi ou deja a destination Exemple: Copier -- Se rapprocher de [3,-5] while not map:onMap("3,-5") do if not map:moveTowardMap(3, -5) then global:printError("Bloque!") break end global:delay(1000) end [PrécédentmoveTowardchevron-left](https://docs.snowbot.eu/methodes/navigation/map/movetoward) [SuivantmoveTowardMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/movetowardmapid) Mis à jour il y a 2 mois --- # saveZaap | Snowbot Docs **🎮Méthode** Copier map:saveZaap() Sauvegarde le zaap actuel comme point de reapparition. Cherche l'element interactif de type zaap (ID 114) sur la carte, l'utilise, puis envoie ZaapRespawnSaveRequestMessage au serveur. Attend la confirmation et ferme le dialogue. Exemple: Copier -- Sur une carte avec un zaap map:saveZaap() global:printSuccess("Zaap sauvegarde comme point de spawn!") circle-info Affiche une erreur s’il n’y a aucun zaap ou zaapi sur la carte. [PrécédentresetCustomObstacleschevron-left](https://docs.snowbot.eu/methodes/navigation/map/resetcustomobstacles) [SuivantsendMapRequestchevron-right](https://docs.snowbot.eu/methodes/navigation/map/sendmaprequest) Mis à jour il y a 2 mois --- # setSpeedMultiplier | Snowbot Docs **🎮Méthode** Copier map:setSpeedMultiplier(x) Definit un multiplicateur de vitesse pour les deplacements. Modifie PacketAnalyser.MultiplierSpeed qui affecte la vitesse d'animation des mouvements. Paramètres: Nom Type Description `x` `number` Multiplicateur (1.0 = normal, 2.0 = double vitesse) Exemple: Copier -- Doubler la vitesse map:setSpeedMultiplier(2.0) -- Revenir a la normale map:setSpeedMultiplier(1.0) [PrécédentsetCustomObstacleschevron-left](https://docs.snowbot.eu/methodes/navigation/map/setcustomobstacles) [SuivantToZaapchevron-right](https://docs.snowbot.eu/methodes/navigation/map/tozaap) Mis à jour il y a 2 mois --- # setCustomObstacles | Snowbot Docs **🎮Méthode** Copier map:setCustomObstacles(cells) Definit des cellules comme obstacles temporaires pour le pathfinding. Cree des MapObstacle avec state=1 pour chaque cellule specifiee et les applique via \_everMap.UpdateObstacles(). Utile pour eviter certaines zones. Paramètres: Nom Type Description `cells` `table` Liste des IDs de cellules a bloquer Exemple: Copier -- Bloquer certaines cellules local cellsToBlock = {100, 101, 102, 150, 151} map:setCustomObstacles(cellsToBlock) -- Le pathfinding evitera maintenant ces cellules map:moveToCell(200) -- Ne pas oublier de reset apres map:resetCustomObstacles() [PrécédentsendMapRequestchevron-left](https://docs.snowbot.eu/methodes/navigation/map/sendmaprequest) [SuivantsetSpeedMultiplierchevron-right](https://docs.snowbot.eu/methodes/navigation/map/setspeedmultiplier) Mis à jour il y a 2 mois --- # ToZaap | Snowbot Docs **🎮Méthode** Copier map:ToZaap(mapid, sourceType) Teleporte le personnage vers un zaap specifique. Cherche d'abord l'element zaap (114) sur la carte, l'utilise, puis envoie TeleportRequestMessage avec les parametres specifies. Attend la confirmation de teleportation (paquet 5502). Paramètres: Nom Type Description `mapid` `number` MapId du zaap de destination `sourceType` `number` Type de source: 0 = zaap standard (defaut) Exemple: Copier -- Teleportation vers un zaap local destinationZaap = 123456789 map:ToZaap(destinationZaap, 0) global:printSuccess("Teleporte!") circle-info **Note :** Ne fait rien si déjà sur la carte de destination. Affiche une erreur s’il n’y a pas de zaap sur la carte actuelle. [PrécédentsetSpeedMultiplierchevron-left](https://docs.snowbot.eu/methodes/navigation/map/setspeedmultiplier) [SuivantuseByIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/usebyid) Mis à jour il y a 2 mois --- # useById | Snowbot Docs **🎮Méthode** Copier map:useById(elementId, skillInstanceUid) Utilise un element interactif par son ID et son skill. Appelle directement FullAcces.useById() qui gere le deplacement vers l'element et l'envoi du paquet d'interaction. Paramètres: Nom Type Description `elementId` `number` ID de l'element interactif `skillInstanceUid` `number` UID de la competence a utiliser (0 pour la premiere) Exemple: Copier -- Utiliser un element avec sa competence par defaut map:useById(12345, 0) -- Utiliser une competence specifique map:useById(12345, 67890) [PrécédentToZaapchevron-left](https://docs.snowbot.eu/methodes/navigation/map/tozaap) [Suivantnpcchevron-right](https://docs.snowbot.eu/methodes/navigation/npc) Mis à jour il y a 2 mois --- # loadMoveToCoord | Snowbot Docs **🎮Méthode** Copier map:loadMoveToCoord(x, y) Charge un trajet vers des coordonnées spécifiques. Convertit les coordonnées en mapId via GetMapIdFromCoords puis appelle WorldPathFinder.MoveTo(). Paramètres: Nom Type Description `x` `number` Coordonnee X de destination `y` `number` Coordonnee Y de destination Retourne: `boolean` - true si le trajet a ete charge Exemple: Copier if map:loadMoveToCoord(3, -5) then global:printSuccess("Trajet vers [3,-5] charge") end [PrécédentloadMovechevron-left](https://docs.snowbot.eu/methodes/navigation/map/loadmove) [SuivantloadMoveToMapIdchevron-right](https://docs.snowbot.eu/methodes/navigation/map/loadmovetomapid) Mis à jour il y a 2 mois --- # global | Snowbot Docs ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#accounttag) accountTag 🎮Méthode Copier global:accountTag() Retourne le tag complet du compte au format "pseudo#discriminant". Ce tag est l'identifiant unique visible utilise par Ankama pour identifier les joueurs. Retourne: `string` - Tag du compte au format "nickname#tag" Exemple: Copier local tag = global:accountTag() global:printMessage("Mon tag: " .. tag) -- Exemple de sortie: "MonPseudo#1234" * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#activateantimoderator) activateAntiModerator 🎮Méthode Copier global:activateAntiModerator(value) Active ou desactive le systeme anti-moderateur global. Ce parametre est sauvegarde dans les settings de l'application et persiste entre les sessions. Quand actif, le bot peut detecter les messages de moderateurs et reagir automatiquement. Paramètres: Nom Type Description `value` `boolean` true pour activer, false pour desactiver Exemple: Note: Ce parametre est global a toute l'application, pas seulement au compte courant. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#addinglobalmemory) AddInGlobalMemory 🎮Méthode Ajoute une variable dans la memoire globale partagee entre TOUS les comptes connectes. Cette memoire est thread-safe (utilise SyncLock) et permet la communication entre differents bots. La variable n'est ajoutee que si elle n'existe pas deja. Paramètres: Nom Type Description `variableName` `string` Nom unique de la variable `value` `any` Valeur a stocker (peut etre n'importe quel type) Exemple: Note: Utiliser EditInGlobalMemory pour modifier une variable existante. AddInGlobalMemory n'ecrase pas les valeurs existantes. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#addinmemory) addInMemory 🎮Méthode Ajoute une variable dans la memoire locale du compte. Cette memoire est privee et n'est pas partagee avec les autres comptes. Utile pour stocker des etats persistants durant l'execution du script. Paramètres: Nom Type Description `variableName` `string` Nom de la variable `value` `any` Valeur a stocker Exemple: Note: La memoire locale est effacee quand le script est recharge. Utiliser la memoire globale pour persister entre les rechargements. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#afterfight) afterFight 🎮Méthode Verifie si le personnage vient de terminer un combat. Cette fonction retourne true UNE SEULE FOIS apres chaque combat - elle remet automatiquement le flag a false apres lecture. Utile pour executer des actions post-combat comme la verification de l'inventaire ou la regeneration. Retourne: `boolean` - true si un combat vient de se terminer (retourne false aux appels suivants) Exemple: Note: Cette fonction est "consumable" - elle ne retourne true qu'une seule fois par combat. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#antimoderatoractivated) antiModeratorActivated 🎮Méthode Verifie si le systeme anti-moderateur est actuellement active dans les settings de l'application. Retourne: `boolean` - true si le systeme anti-moderateur est actif Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#askinput) askInput 🎮Méthode Affiche une boite de dialogue Windows (InputBox) demandant a l'utilisateur de saisir une valeur. Le script est mis en pause jusqu'a ce que l'utilisateur reponde. Si le titre n'est pas specifie, "SnowBot - Input" est utilise par defaut. Paramètres: Nom Type Description `question` `string` Question ou instruction a afficher `title` `string` Titre de la fenetre (optionnel) Retourne: `string` - Texte saisi par l'utilisateur, ou chaine vide si annule Exemple: Note: Bloque l'execution du script jusqu'a la reponse de l'utilisateur. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#askquestion) askQuestion 🎮Méthode Affiche une boite de dialogue Windows avec une question et deux boutons Oui/Non. Le script est mis en pause jusqu'a ce que l'utilisateur clique sur un bouton. Paramètres: Nom Type Description `question` `string` Question a poser Retourne: `boolean` - true si l'utilisateur a clique sur Oui, false si Non Exemple: Note: Bloque l'execution du script jusqu'au clic de l'utilisateur. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#blabla) blabla 🎮Méthode Alias interne pour isKoliServer(). Retourne true si le serveur actuel est un serveur Kolizeum. Retourne: `boolean` - true si serveur Kolizeum Exemple: Note: Preferer utiliser isKoliServer() pour plus de clarte. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#characterslist) charactersList 🎮Méthode Retourne le message CharactersListMessage contenant la liste complete des personnages du compte. Ce message est recu lors de la connexion et contient tous les personnages avec leurs informations (nom, niveau, serveur, etc.). Retourne: `CharactersListMessage` - Message contenant la liste des personnages avec leurs details Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#checkcredentialsstatus) checkCredentialsStatus 🎮Méthode Retourne le statut de validation des identifiants du compte (email/mot de passe). Permet de savoir si les credentials sont valides, expires ou invalides. Retourne: `string` - Statut des identifiants Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#checkmoderator) checkModerator 🎮Méthode Interroge le serveur Snowbot pour verifier si un moderateur a ete detecte sur le serveur actuel dans les X dernieres minutes. Utilise une API externe pour centraliser les detections de tous les utilisateurs. Paramètres: Nom Type Description `minutes` `number` Periode de verification en minutes Retourne: `boolean` - true si un moderateur a ete signale dans la periode Exemple: Note: Necessite une connexion internet. La detection est basee sur les signalements de la communaute. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#clearconsole) clearConsole 🎮Méthode Efface completement le contenu de la console/chat du bot. Utile pour nettoyer l'affichage avant de commencer une nouvelle session ou pour reduire l'utilisation memoire. Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#consolelines) consoleLines 🎮Méthode Retourne toutes les lignes actuellement affichees dans la console sous forme de liste. Les premiers 3 caracteres (prefixe de ligne) et les 10 derniers caracteres (suffixe) sont automatiquement supprimes. Utile pour analyser l'historique des messages. Retourne toutes les lignes actuellement affichees dans la console sous forme de liste. Les premiers 3 caracteres (prefixe de ligne) et les 10 derniers caracteres (suffixe) sont automatiquement supprimes. Utile pour analyser l'historique des messages. Signature: `global:consoleLines()` Exemple: Note: En cas d'erreur, la fonction reessaie automatiquement apres 1 seconde. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#delay) delay 🎮Méthode Met en pause l'execution du script pendant une duree specifiee en millisecondes. Pendant la pause, le bot continue de lire les messages entrants (ReadFlowMessage) toutes les 200ms pour rester reactif aux evenements du jeu. Paramètres: Nom Type Description `Time` `number` Duree de pause en millisecondes Exemple: Note: Le bot reste reactif pendant le delay (traitement des paquets en arriere-plan). * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#deleteallglobalmemory) DeleteAllGlobalMemory Supprime TOUTES les variables de la memoire globale partagee. Operation thread-safe qui affecte tous les comptes connectes. A utiliser avec precaution car cela peut affecter les autres scripts en cours d'execution. Signature: `global:DeleteAllGlobalMemory()` Exemple: Note: Affecte TOUS les comptes! A utiliser uniquement par le chef d'equipe. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#deleteallmemory) deleteAllMemory Supprime toutes les variables de la memoire locale du compte. N'affecte pas les autres comptes ni la memoire globale. Signature: `global:deleteAllMemory()` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#deletefromglobalmemory) DeleteFromGlobalMemory Supprime une variable specifique de la memoire globale partagee. Operation thread-safe. Signature: `global:DeleteFromGlobalMemory(variableName)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable a supprimer Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#deletememory) deleteMemory Supprime une variable specifique de la memoire locale du compte. Signature: `global:deleteMemory(variableName)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable a supprimer Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#disconnect) disconnect Deconnecte le compte actuel ET tous les membres de l'equipe (Teamcontrol) du serveur de jeu. La deconnexion est effectuee dans l'ordre: d'abord les mules, puis le chef. Signature: `global:disconnect()` Exemple: Note: Deconnecte automatiquement toute l'equipe si ce compte est chef. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#editalias) editAlias Modifie l'alias (nom affiche) du compte dans Snowbot. Peut optionnellement sauvegarder le changement de facon permanente dans les settings. Inclut un systeme de retry automatique en cas d'echec. Signature: `global:editAlias(newAlias, keep, retryCount, retryDelayMs)` Paramètres: Nom Type Description `newAlias` `string` Nouvel alias a utiliser `keep` `boolean` true pour sauvegarder dans les settings (optionnel, defaut: false) `retryCount` `number` Nombre de tentatives en cas d'echec (optionnel, defaut: 3) `retryDelayMs` `number` Delai entre les tentatives en ms (optionnel, defaut: 100) Retourne: `boolean` - true si la modification a reussi Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#editinglobalmemory) EditInGlobalMemory Modifie la valeur d'une variable EXISTANTE dans la memoire globale partagee. La variable doit avoir ete creee prealablement avec AddInGlobalMemory. Operation thread-safe. Signature: `global:EditInGlobalMemory(variableName, value)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable existante `value` `any` Nouvelle valeur Exemple: Note: Ne fait rien si la variable n'existe pas. Utiliser AddInGlobalMemory d'abord. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#editinmemory) editInMemory Modifie la valeur d'une variable existante dans la memoire locale du compte. La variable doit avoir ete creee avec addInMemory. Signature: `global:editInMemory(variableName, value)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable `value` `any` Nouvelle valeur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#elapsedtime) elapsedTime Retourne le temps ecoule depuis le demarrage du bot (pas du script) en millisecondes. Utile pour mesurer des durees ou programmer des actions periodiques. Signature: `global:elapsedTime()` Retourne: `number` - Temps en millisecondes depuis le demarrage Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#exportallpublicmethods) exportAllPublicMethods Genere une documentation textuelle complete de toutes les methodes publiques disponibles dans l'API Lua. Inclut tous les modules (character, inventory, map, etc.) avec leurs signatures et types de retour. Signature: `global:exportAllPublicMethods()` Retourne: `string` - Documentation formatee de toutes les methodes Exemple: Note: Utile pour les developpeurs de scripts. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#fightmessage) fightMessage Retourne les informations detaillees du dernier combat termine (GameFightEndMessage). Si lastFightNumber est specifie, retourne le combat correspondant a cet index. Contient les XP, kamas, loots, etc. Signature: `global:fightMessage(lastFightNumber)` Paramètres: Nom Type Description `lastFightNumber` `number` Index du combat (-1 ou omis = dernier combat) Retourne: `GameFightEndMessage` - Message de fin de combat avec toutes les recompenses Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#finishscript) finishScript Arrete proprement l'execution du script en cours. Le script s'arrete immediatement mais le bot reste connecte. Utile pour terminer un script apres avoir atteint un objectif. Signature: `global:finishScript()` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getalias) getAlias Retourne l'alias actuel du compte tel qu'il est affiche dans l'interface Snowbot. Signature: `global:getAlias()` Retourne: `string` - Alias du compte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getallfilesnameindirectory) getAllFilesNameInDirectory Liste tous les fichiers d'un repertoire specifie. Peut filtrer par extension. Pour des raisons de securite, les repertoires contenant "AppData" sont bloques. Signature: `global:getAllFilesNameInDirectory(directoryName, filter)` Paramètres: Nom Type Description `directoryName` `string` Chemin complet du repertoire `filter` `string` Extension a filtrer sans le point (ex: "lua", "json") - optionnel Retourne: `table` - Liste des noms de fichiers Exemple: Note: Les chemins contenant AppData sont bloques pour securite. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getcontroller) getController Retourne un objet AccountController pour le compte actuel. Permet d'acceder a des fonctionnalites avancees de controle du compte. Signature: `global:getController()` Retourne: `AccountController` - Controleur du compte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getcountfight) getCountFight Retourne le nombre total de combats effectues depuis le demarrage du bot. Ce compteur est incremente automatiquement a chaque fin de combat. Signature: `global:getCountFight()` Retourne: `number` - Nombre de combats Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getcountgather) getCountGather Retourne le nombre total de recoltes effectuees depuis le demarrage du bot. Incremente a chaque ressource recoltee avec succes. Signature: `global:getCountGather()` Retourne: `number` - Nombre de recoltes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getcurrentdirectory) getCurrentDirectory Retourne le repertoire de travail actuel de l'application (Environment.CurrentDirectory). Generalement le dossier d'installation de Snowbot. Signature: `global:getCurrentDirectory()` Retourne: `string` - Chemin complet du repertoire de travail Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getcurrentproxyaddress) getCurrentProxyAddress Retourne l'adresse IP et le port du proxy actuellement utilise, au format "ip:port". Retourne une chaine vide si aucun proxy n'est configure ou actif. Signature: `global:getCurrentProxyAddress()` Retourne: `string` - Adresse du proxy au format "ip:port" ou chaine vide Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getcurrentscriptdirectory) getCurrentScriptDirectory Retourne le repertoire contenant le script actuellement en cours d'execution. Utile pour charger des fichiers relatifs au script (configs, sous-scripts, etc.). Signature: `global:getCurrentScriptDirectory()` Retourne: `string` - Chemin complet du dossier du script Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getinglobalmemory) GetInGlobalMemory Recupere la valeur d'une variable depuis la memoire globale partagee entre tous les comptes. Retourne nil si la variable n'existe pas. Operation thread-safe. Signature: `global:GetInGlobalMemory(variableName)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable Retourne: `any` - Valeur de la variable ou nil si non trouvee Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getproxyconfig) getProxyConfig Retourne la configuration complete du proxy au format "ip:port:username:password". Chaque composant n'est ajoute que s'il est configure. Retourne une chaine vide si aucun proxy. Signature: `global:getProxyConfig()` Retourne: `string` - Configuration du proxy ou chaine vide Exemple: Note: Contient potentiellement des informations sensibles (credentials). * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getreplies) getReplies Retourne la liste des IDs de reponses disponibles dans le dialogue NPC actuel. Ces IDs peuvent etre utilises avec npc:reply() pour selectionner une reponse. Signature: `global:getReplies()` Retourne: `table` - Liste des IDs de reponses (UInteger) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getteammembers) getTeamMembers Retourne la liste des noms de personnages de l'equipe Snowbot (pas le groupe en jeu). Inclut le chef et tous les membres du Teamcontrol. Fonctionne uniquement depuis le chef d'equipe. Signature: `global:getTeamMembers()` Retourne: `table` - Liste des noms de personnages Exemple: Note: Retourne une liste vide si pas chef d'equipe. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getteammembersids) getTeamMembersIds Retourne la liste des IDs de personnages (idperso) de l'equipe Snowbot. Fonctionne uniquement depuis le chef d'equipe. Signature: `global:getTeamMembersIds()` Retourne: `table` - Liste des IDs de personnages (Double) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getteammembersnames) getTeamMembersNames Alias de getTeamMembers(). Retourne la liste des noms de personnages de l'equipe Snowbot. Signature: `global:getTeamMembersNames()` Retourne: `table` - Liste des noms de personnages Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#getteammembersusernames) getTeamMembersUsernames Retourne la liste des usernames (identifiants de connexion) de l'equipe Snowbot. Fonctionne uniquement depuis le chef d'equipe. Signature: `global:getTeamMembersUsernames()` Retourne: `table` - Liste des usernames Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#gettoken) getToken Retourne le token de l'instance Snowbot (RawdataServer.username). Ce token est utilise pour l'authentification avec les services Snowbot. Signature: `global:getToken()` Retourne: `string` - Token de l'instance Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#groupcharacters) groupCharacters Groupe plusieurs comptes Snowbot en equipe. Le compte appelant devient automatiquement le chef. Les comptes specifies sont recherches parmi tous les MITM connectes et ajoutes au Teamcontrol. Met a jour automatiquement l'interface (TreeView). Signature: `global:groupCharacters(usernames)` Paramètres: Nom Type Description `usernames` `table` Liste des usernames des comptes a grouper Exemple: Note: Les comptes doivent etre connectes dans Snowbot. Les comptes deja en equipe sont ignores. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#inviteteam) inviteTeam Envoie des invitations de groupe (en jeu) a tous les membres de l'equipe Snowbot. Met d'abord les mules en statut "disponible" puis envoie les invitations. Fonctionne uniquement depuis le chef d'equipe. Signature: `global:inviteTeam()` Exemple: Note: Necessite d'etre chef d'equipe ET en jeu. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#isboss) isBoss Verifie si le compte actuel est le chef de l'equipe Snowbot. Retourne true uniquement si le compte est en mode Team ET est designe comme ChefTeam. Signature: `global:isBoss()` Retourne: `boolean` - true si ce compte est le chef d'equipe Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#isinfight) isInFight Verifie si le personnage est actuellement en combat. Utile pour conditionner des actions qui ne doivent pas etre executees pendant un combat. Signature: `global:isInFight()` Retourne: `boolean` - true si en combat Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#isinparty) isInParty Verifie si un joueur specifique (par son ID) fait partie du groupe en jeu actuel. Utilise la liste dansLeGroupe du MITM. Signature: `global:isInParty(playerId)` Paramètres: Nom Type Description `playerId` `number` ID du joueur a verifier Retourne: `boolean` - true si le joueur est dans le groupe Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#isinteam) isInTeam Verifie si un utilisateur ou personnage fait partie de l'equipe Snowbot (pas le groupe en jeu). Recherche par username OU par nom de personnage. Signature: `global:isInTeam(usernameOrCharacterName)` Paramètres: Nom Type Description `usernameOrCharacterName` `string` Username du compte OU nom du personnage Retourne: `boolean` - true si dans l'equipe Snowbot Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#iskoliserver) isKoliServer Verifie si le serveur actuel est un serveur Kolizeum (IsKoli du PacketAnalyser). Signature: `global:isKoliServer()` Retourne: `boolean` - true si serveur Kolizeum Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#isregisteredinkoli) isRegisteredInKoli Verifie si le personnage est actuellement inscrit dans la file d'attente Kolizeum. Signature: `global:isRegisteredInKoli()` Retourne: `boolean` - true si inscrit en file Kolizeum Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#isscriptplaying) isScriptPlaying Verifie si un script est actuellement en cours d'execution sur ce compte. Signature: `global:isScriptPlaying()` Retourne: `boolean` - true si un script est en cours Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#isstuffforkoli) isStuffForKoli Verifie si le personnage a un equipement complet pour le Kolizeum. Controle les positions: chapeau(0), cape(1), amulette(2), anneau1(3), ceinture(4), anneau2(5), bottes(6), arme(7) et bouclier(15). Affiche un avertissement si des emplacements sont vides. Signature: `global:isStuffForKoli()` Retourne: `boolean` - true si tous les emplacements requis sont equipes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#joinboss) joinBoss 🎮Méthode Ordonne a tous les membres de l'equipe de rejoindre la carte du chef. Met le flag goToLeader=true pour chaque membre qui n'est pas sur la meme carte. Fonctionne uniquement depuis le chef. Exemple: Note: Les mules doivent avoir un script qui gere le flag goToLeader. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#lastmoderatormessage) lastModeratorMessage 🎮Méthode Retourne le dernier message d'avertissement de moderateur recu (PopupWarningMessage). Peut etre nil si aucun message n'a ete recu. Retourne: `PopupWarningMessage` - Dernier message de moderateur ou nil Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#leaderaccountcontroller) leaderAccountController 🎮Méthode Retourne l'AccountController du chef d'equipe. Si appele depuis le chef, retourne son propre controller. Si appele depuis une mule, retourne le controller du chef (ChefMitm). Retourne: `AccountController` - Controller du chef ou nil si pas en equipe Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#leavedialog) leaveDialog 🎮Méthode Ferme le dialogue NPC ou la fenetre d'echange actuellement ouverte. Envoie LeaveDialogRequestMessage au serveur et attend la confirmation (packet 176). Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#loadandstart) loadAndStart 🎮Méthode Charge et demarre un autre script Lua. Si breakCurrentScript est true, attend longtemps puis arrete le script actuel. Le nouveau script est charge dans un thread separe. Paramètres: Nom Type Description `file` `string` Chemin complet du script a charger `breakCurrentScript` `boolean` true pour arreter le script actuel (optionnel) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#loadconfiguration) loadConfiguration 🎮Méthode Charge un fichier de configuration complet (.json) et l'applique au compte. Ecrase la configuration actuelle, initialise et recharge tous les parametres. Paramètres: Nom Type Description `config` `string` Chemin complet du fichier de configuration Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#loadconfigurationwithoutscript) LoadConfigurationWithoutScript 🎮Méthode Charge une configuration sans modifier le script actuel. Utile pour changer les parametres (sorts, comportements) sans recharger le script. Sauvegarde le script actuel, charge la config, puis restaure le chemin du script. Paramètres: Nom Type Description `config` `string` Chemin du fichier de configuration Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#openmitm) openMitm 🎮Méthode Retourne: `boolean` - true si le MITM a ete active Active le mode MITM (Man-In-The-Middle) et lance Dofus avec la redirection. Ne peut pas etre utilise pendant un combat. Cree un nouveau thread pour demarrer Dofus. Exemple: Note: Ne fonctionne pas si deja en MITM ou en combat. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#password) password 🎮Méthode Retourne le mot de passe du compte. Signature: `global:password()` Exemple: Note: Attention: information sensible! Ne pas afficher ou logger. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#playaudio) playAudio 🎮Méthode Joue un fichier audio (WAV, MP3, etc.) en utilisant l'API audio de Windows. Signature: `global:playAudio(file)` Signature: `global:playAudio(file)` Paramètres: Nom Type Description `file` `string` Chemin complet du fichier audio * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#printcolor) printColor Affiche un message dans la console avec une couleur personnalisee. La couleur doit etre au format hexadecimal (#RRGGBB). La fonction detecte automatiquement si les parametres sont inverses. Signature: `global:printColor(Message, hexColor)` Paramètres: Nom Type Description `Message` `string` Message a afficher `hexColor` `string` Couleur en hexadecimal (ex: "#FF0000" pour rouge) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#printerror) printError Affiche un message d'erreur dans la console (LogType.Errorr). Le message apparait en rouge. Signature: `global:printError(Message)` Paramètres: Nom Type Description `Message` `string` Message d'erreur Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#printmessage) printMessage Affiche un message d'information standard dans la console (LogType.Info). Signature: `global:printMessage(Message)` Paramètres: Nom Type Description `Message` `string` Message a afficher Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#printsuccess) printSuccess Affiche un message de succes dans la console (LogType.Sucess). Le message apparait en vert. Signature: `global:printSuccess(message)` Paramètres: Nom Type Description `message` `string` Message de succes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#proxyisenabled) proxyIsEnabled Verifie si un proxy est configure et actif pour ce compte. Signature: `global:proxyIsEnabled()` Retourne: `boolean` - true si proxy actif Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#random) random Genere un nombre entier aleatoire entre min et max (inclus). Utilise System.Random. Signature: `global:random(min, max)` Paramètres: Nom Type Description `min` `number` Valeur minimum (incluse) `max` `number` Valeur maximum (incluse) Retourne: `number` - Nombre aleatoire entre min et max Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#rcaskfight) rcAskFight Affiche une boite de dialogue demandant a l'utilisateur s'il veut combattre sur cette carte. Message: "Voulez-vous combattre sur cette carte?" Signature: `global:rcAskFight()` Retourne: `boolean` - true si l'utilisateur a clique Oui Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#rcaskgather) rcAskGather Affiche une boite de dialogue demandant a l'utilisateur s'il veut recolter sur cette carte. Message: "Voulez-vous recolter sur cette carte?" Signature: `global:rcAskGather()` Retourne: `boolean` - true si l'utilisateur a clique Oui Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#reconnect) reconnect Programme une reconnexion de l'equipe complete apres X heures. Deconnecte d'abord les mules (avec un decalage de 1 seconde entre chaque) puis le chef. Signature: `global:reconnect(Heure)` Paramètres: Nom Type Description `Heure` `number` Delai en heures avant reconnexion Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#reconnectbis) reconnectBis Programme une reconnexion du compte actuel (sans l'equipe) apres X minutes. Signature: `global:reconnectBis(minutes)` Paramètres: Nom Type Description `minutes` `number` Delai en minutes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#reconnectsec) reconnectSec Programme une reconnexion de l'equipe apres X secondes. Les mules sont decalees de 1 seconde chacune. Signature: `global:reconnectSec(Heure)` Paramètres: Nom Type Description `Heure` `number` Delai en secondes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#reconnectwithtoken) reconnectWithToken Programme une reconnexion avec recuperation prealable d'un token de reconnexion (ReloginTokenRequestMessage). Permet une reconnexion plus rapide. Le delai doit etre inferieur a 50 secondes pour que le token reste valide. Signature: `global:reconnectWithToken(s)` Paramètres: Nom Type Description `s` `number` Delai en secondes (max 50) Exemple: Note: Le shield doit etre actif pour utiliser les tokens de reconnexion. * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#reloadscript) reloadScript Recharge le script actuel dans un nouveau thread. Attend 1 seconde avant le rechargement. Retourne false apres le lancement du rechargement. Signature: `global:reloadScript()` Retourne: `boolean` - false apres le rechargement Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#remember) remember Recupere la valeur d'une variable depuis la memoire locale du compte. Retourne nil si la variable n'existe pas. Signature: `global:remember(variableName)` Paramètres: Nom Type Description `variableName` `string` Nom de la variable Retourne: `any` - Valeur stockee ou nil Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#resetcountfight) resetCountFight Remet a zero le compteur de combats du bot. Signature: `global:resetCountFight()` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#resetcountgather) resetCountGather Remet a zero le compteur de recoltes du bot. Signature: `global:resetCountGather()` Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#restartscript) RestartScript Redemarre le script. Si reload est true, recharge depuis le fichier. Arrete proprement le script en cours avant de redemarrer dans un nouveau thread. Signature: `global:RestartScript(reload)` Paramètres: Nom Type Description `reload` `boolean` true pour recharger depuis le fichier Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#setprivate) setPrivate Active ou desactive le mode prive (statut "absent") pour le compte actuel. En mode prive, le personnage aparait comme absent pour les autres joueurs. Signature: `global:setPrivate(enabled)` Paramètres: Nom Type Description `enabled` `boolean` true pour activer le mode prive Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#setprivateteam) setPrivateTeam Active ou desactive le mode prive pour tous les membres de l'equipe (sauf le chef). Fonctionne uniquement depuis le chef d'equipe. Signature: `global:setPrivateTeam(enabled)` Paramètres: Nom Type Description `enabled` `boolean` true pour activer le mode prive Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#thisaccountcontroller) thisAccountController Cree et retourne un nouvel AccountController pour le compte actuel. Permet d'acceder aux fonctionnalites avancees de controle. Signature: `global:thisAccountController()` Retourne: `AccountController` - Nouveau controleur pour ce compte Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#ungroupcharacters) ungroupCharacters Retire des comptes de l'equipe Snowbot. Si usernames est nil ou vide, degroupe TOUS les membres. Met a jour le Teamcontrol et l'interface. Fonctionne uniquement depuis le chef. Signature: `global:ungroupCharacters(usernames)` Paramètres: Nom Type Description `usernames` `table` Liste des usernames a degrouper (optionnel - nil pour tous) Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#unregisterfromkoliifregistered) unregisterFromKoliIfRegistered Se desinscrit de la file d'attente Kolizeum si actuellement inscrit. Envoie GameRolePlayArenaUnregisterMessage au serveur. Signature: `global:unregisterFromKoliIfRegistered()` Retourne: `boolean` - true si desinscrit avec succes Exemple: * * * ### [hashtag](https://docs.snowbot.eu/methodes/systeme/global#username) username Retourne le nom d'utilisateur (email/identifiant) utilise pour la connexion au compte. Signature: `global:username()` Retourne: `string` - Username du compte Exemple: * * * [PrécédentSystèmechevron-left](https://docs.snowbot.eu/methodes/systeme) [Suivantaccountchevron-right](https://docs.snowbot.eu/methodes/systeme/account) Mis à jour il y a 2 mois * [accountTag](https://docs.snowbot.eu/methodes/systeme/global#accounttag) * [activateAntiModerator](https://docs.snowbot.eu/methodes/systeme/global#activateantimoderator) * [AddInGlobalMemory](https://docs.snowbot.eu/methodes/systeme/global#addinglobalmemory) * [addInMemory](https://docs.snowbot.eu/methodes/systeme/global#addinmemory) * [afterFight](https://docs.snowbot.eu/methodes/systeme/global#afterfight) * [antiModeratorActivated](https://docs.snowbot.eu/methodes/systeme/global#antimoderatoractivated) * [askInput](https://docs.snowbot.eu/methodes/systeme/global#askinput) * [askQuestion](https://docs.snowbot.eu/methodes/systeme/global#askquestion) * [blabla](https://docs.snowbot.eu/methodes/systeme/global#blabla) * [charactersList](https://docs.snowbot.eu/methodes/systeme/global#characterslist) * [checkCredentialsStatus](https://docs.snowbot.eu/methodes/systeme/global#checkcredentialsstatus) * [checkModerator](https://docs.snowbot.eu/methodes/systeme/global#checkmoderator) * [clearConsole](https://docs.snowbot.eu/methodes/systeme/global#clearconsole) * [consoleLines](https://docs.snowbot.eu/methodes/systeme/global#consolelines) * [delay](https://docs.snowbot.eu/methodes/systeme/global#delay) * [DeleteAllGlobalMemory](https://docs.snowbot.eu/methodes/systeme/global#deleteallglobalmemory) * [deleteAllMemory](https://docs.snowbot.eu/methodes/systeme/global#deleteallmemory) * [DeleteFromGlobalMemory](https://docs.snowbot.eu/methodes/systeme/global#deletefromglobalmemory) * [deleteMemory](https://docs.snowbot.eu/methodes/systeme/global#deletememory) * [disconnect](https://docs.snowbot.eu/methodes/systeme/global#disconnect) * [editAlias](https://docs.snowbot.eu/methodes/systeme/global#editalias) * [EditInGlobalMemory](https://docs.snowbot.eu/methodes/systeme/global#editinglobalmemory) * [editInMemory](https://docs.snowbot.eu/methodes/systeme/global#editinmemory) * [elapsedTime](https://docs.snowbot.eu/methodes/systeme/global#elapsedtime) * [exportAllPublicMethods](https://docs.snowbot.eu/methodes/systeme/global#exportallpublicmethods) * [fightMessage](https://docs.snowbot.eu/methodes/systeme/global#fightmessage) * [finishScript](https://docs.snowbot.eu/methodes/systeme/global#finishscript) * [getAlias](https://docs.snowbot.eu/methodes/systeme/global#getalias) * [getAllFilesNameInDirectory](https://docs.snowbot.eu/methodes/systeme/global#getallfilesnameindirectory) * [getController](https://docs.snowbot.eu/methodes/systeme/global#getcontroller) * [getCountFight](https://docs.snowbot.eu/methodes/systeme/global#getcountfight) * [getCountGather](https://docs.snowbot.eu/methodes/systeme/global#getcountgather) * [getCurrentDirectory](https://docs.snowbot.eu/methodes/systeme/global#getcurrentdirectory) * [getCurrentProxyAddress](https://docs.snowbot.eu/methodes/systeme/global#getcurrentproxyaddress) * [getCurrentScriptDirectory](https://docs.snowbot.eu/methodes/systeme/global#getcurrentscriptdirectory) * [GetInGlobalMemory](https://docs.snowbot.eu/methodes/systeme/global#getinglobalmemory) * [getProxyConfig](https://docs.snowbot.eu/methodes/systeme/global#getproxyconfig) * [getReplies](https://docs.snowbot.eu/methodes/systeme/global#getreplies) * [getTeamMembers](https://docs.snowbot.eu/methodes/systeme/global#getteammembers) * [getTeamMembersIds](https://docs.snowbot.eu/methodes/systeme/global#getteammembersids) * [getTeamMembersNames](https://docs.snowbot.eu/methodes/systeme/global#getteammembersnames) * [getTeamMembersUsernames](https://docs.snowbot.eu/methodes/systeme/global#getteammembersusernames) * [getToken](https://docs.snowbot.eu/methodes/systeme/global#gettoken) * [groupCharacters](https://docs.snowbot.eu/methodes/systeme/global#groupcharacters) * [inviteTeam](https://docs.snowbot.eu/methodes/systeme/global#inviteteam) * [isBoss](https://docs.snowbot.eu/methodes/systeme/global#isboss) * [isInFight](https://docs.snowbot.eu/methodes/systeme/global#isinfight) * [isInParty](https://docs.snowbot.eu/methodes/systeme/global#isinparty) * [isInTeam](https://docs.snowbot.eu/methodes/systeme/global#isinteam) * [isKoliServer](https://docs.snowbot.eu/methodes/systeme/global#iskoliserver) * [isRegisteredInKoli](https://docs.snowbot.eu/methodes/systeme/global#isregisteredinkoli) * [isScriptPlaying](https://docs.snowbot.eu/methodes/systeme/global#isscriptplaying) * [isStuffForKoli](https://docs.snowbot.eu/methodes/systeme/global#isstuffforkoli) * [joinBoss](https://docs.snowbot.eu/methodes/systeme/global#joinboss) * [lastModeratorMessage](https://docs.snowbot.eu/methodes/systeme/global#lastmoderatormessage) * [leaderAccountController](https://docs.snowbot.eu/methodes/systeme/global#leaderaccountcontroller) * [leaveDialog](https://docs.snowbot.eu/methodes/systeme/global#leavedialog) * [loadAndStart](https://docs.snowbot.eu/methodes/systeme/global#loadandstart) * [loadConfiguration](https://docs.snowbot.eu/methodes/systeme/global#loadconfiguration) * [LoadConfigurationWithoutScript](https://docs.snowbot.eu/methodes/systeme/global#loadconfigurationwithoutscript) * [openMitm](https://docs.snowbot.eu/methodes/systeme/global#openmitm) * [password](https://docs.snowbot.eu/methodes/systeme/global#password) * [playAudio](https://docs.snowbot.eu/methodes/systeme/global#playaudio) * [printColor](https://docs.snowbot.eu/methodes/systeme/global#printcolor) * [printError](https://docs.snowbot.eu/methodes/systeme/global#printerror) * [printMessage](https://docs.snowbot.eu/methodes/systeme/global#printmessage) * [printSuccess](https://docs.snowbot.eu/methodes/systeme/global#printsuccess) * [proxyIsEnabled](https://docs.snowbot.eu/methodes/systeme/global#proxyisenabled) * [random](https://docs.snowbot.eu/methodes/systeme/global#random) * [rcAskFight](https://docs.snowbot.eu/methodes/systeme/global#rcaskfight) * [rcAskGather](https://docs.snowbot.eu/methodes/systeme/global#rcaskgather) * [reconnect](https://docs.snowbot.eu/methodes/systeme/global#reconnect) * [reconnectBis](https://docs.snowbot.eu/methodes/systeme/global#reconnectbis) * [reconnectSec](https://docs.snowbot.eu/methodes/systeme/global#reconnectsec) * [reconnectWithToken](https://docs.snowbot.eu/methodes/systeme/global#reconnectwithtoken) * [reloadScript](https://docs.snowbot.eu/methodes/systeme/global#reloadscript) * [remember](https://docs.snowbot.eu/methodes/systeme/global#remember) * [resetCountFight](https://docs.snowbot.eu/methodes/systeme/global#resetcountfight) * [resetCountGather](https://docs.snowbot.eu/methodes/systeme/global#resetcountgather) * [RestartScript](https://docs.snowbot.eu/methodes/systeme/global#restartscript) * [setPrivate](https://docs.snowbot.eu/methodes/systeme/global#setprivate) * [setPrivateTeam](https://docs.snowbot.eu/methodes/systeme/global#setprivateteam) * [thisAccountController](https://docs.snowbot.eu/methodes/systeme/global#thisaccountcontroller) * [ungroupCharacters](https://docs.snowbot.eu/methodes/systeme/global#ungroupcharacters) * [unregisterFromKoliIfRegistered](https://docs.snowbot.eu/methodes/systeme/global#unregisterfromkoliifregistered) * [username](https://docs.snowbot.eu/methodes/systeme/global#username) Copier -- Activer l'anti-moderateur au demarrage du script global:activateAntiModerator(true) -- Verifier et activer si necessaire if not global:antiModeratorActivated() then global:activateAntiModerator(true) global:printSuccess("Anti-moderateur active!") end Copier global:AddInGlobalMemory(variableName, value) Copier -- Creer un compteur partage entre tous les bots global:AddInGlobalMemory("totalKamas", 0) -- Creer une liste de maps visitees partagee global:AddInGlobalMemory("visitedMaps", {}) -- Verifier avant d'ajouter if global:GetInGlobalMemory("bossReady") == nil then global:AddInGlobalMemory("bossReady", false) end Copier global:addInMemory(variableName, value) Copier -- Stocker le nombre de combats depuis la derniere banque global:addInMemory("fightsSinceBank", 0) -- Stocker l'heure de debut global:addInMemory("startTime", global:elapsedTime()) -- Stocker une configuration global:addInMemory("maxFights", 100) Copier global:afterFight() Copier -- Dans la fonction move() if global:afterFight() then global:printMessage("Combat termine!") -- Verifier si on doit aller en banque local pods = inventory:currentPods() local maxPods = inventory:maxPods() if pods > maxPods * 0.9 then return "bank" -- Aller en banque si plus de 90% de pods end end Copier global:antiModeratorActivated() Copier if global:antiModeratorActivated() then global:printMessage("Protection anti-moderateur active") -- Verifier periodiquement les moderateurs if global:checkModerator(5) then global:printError("Moderateur detecte! Deconnexion...") global:disconnect() end end Copier global:askInput(question, title) Copier -- Demander le nombre de combats souhaites local nbCombats = global:askInput("Combien de combats voulez-vous faire?", "Configuration") if nbCombats ~= "" then global:addInMemory("maxFights", tonumber(nbCombats)) global:printSuccess("Configuration: " .. nbCombats .. " combats") end -- Demander une destination local destination = global:askInput("Entrez les coordonnees (ex: 3,-5):") Copier global:askQuestion(question) Copier -- Confirmation avant une action importante if global:askQuestion("Voulez-vous vider l'inventaire en banque?") then inventory:putAllInBank() global:printSuccess("Inventaire depose en banque") else global:printMessage("Operation annulee") end -- Choix de mode de jeu local wantFight = global:askQuestion("Mode combat? (Non = recolte)") Copier global:blabla() Copier if global:blabla() then global:printMessage("Serveur Kolizeum detecte") end Copier global:charactersList() Copier local charList = global:charactersList() if charList and charList.characters then global:printMessage("Personnages du compte:") for _, char in ipairs(charList.characters) do global:printMessage(" - " .. char.name .. " (Niv." .. char.level .. ")") end end Copier global:checkCredentialsStatus() Copier local status = global:checkCredentialsStatus() global:printMessage("Statut credentials: " .. status) if status ~= "valid" then global:printError("Identifiants invalides ou expires!") end Copier global:checkModerator(minutes) Copier -- Verification avant chaque action if global:checkModerator(10) then global:printError("ALERTE: Moderateur detecte dans les 10 dernieres minutes!") global:disconnect() return end -- Verification avec nom de serveur specifique if global:checkModerator("Ombre", 5) then global:printError("Moderateur sur Ombre!") end Copier global:clearConsole() Copier -- Nettoyer au demarrage du script function started() global:clearConsole() global:printSuccess("=== Script demarre ===") global:printMessage("Version 1.0") end Copier global:consoleLines() Copier local lines = global:consoleLines() global:printMessage("Nombre de lignes: " .. #lines) -- Rechercher un message specifique for _, line in ipairs(lines) do if line:find("Erreur") then global:printError("Erreur trouvee dans les logs!") break end end Copier global:delay(Time) Copier -- Pause simple de 2 secondes global:delay(2000) -- Pause aleatoire pour paraitre plus humain local randomDelay = global:random(1000, 3000) global:delay(randomDelay) -- Attendre entre les actions map:changeMap("top") global:delay(500) -- Petite pause apres changement de map Copier -- Reinitialiser la memoire globale au demarrage if global:isBoss() then global:DeleteAllGlobalMemory() global:printSuccess("Memoire globale reinitialisee") end Copier -- Reinitialiser au debut du script function started() global:deleteAllMemory() global:addInMemory("fightCount", 0) global:addInMemory("gatherCount", 0) end Copier -- Nettoyer une variable temporaire global:DeleteFromGlobalMemory("tempData") -- Reinitialiser un flag global:DeleteFromGlobalMemory("bossInFight") Copier -- Supprimer une variable temporaire global:deleteMemory("tempValue") Copier -- Deconnexion d'urgence if global:checkModerator(5) then global:printError("Moderateur detecte! Deconnexion de l'equipe...") global:disconnect() end -- Deconnexion programmee if global:getCountFight() >= 100 then global:printSuccess("100 combats atteints, deconnexion!") global:disconnect() end Copier -- Renommer avec le nom du personnage local charName = character:name() if global:editAlias(charName, true) then global:printSuccess("Alias change en: " .. charName) end -- Alias temporaire (non sauvegarde) global:editAlias("[FARMING] " .. character:name()) Copier -- Incrementer un compteur partage local currentCount = global:GetInGlobalMemory("totalFights") or 0 global:EditInGlobalMemory("totalFights", currentCount + 1) -- Signaler que le boss est pret global:EditInGlobalMemory("bossReady", true) Copier -- Incrementer le compteur de combats local fights = global:remember("fightCount") or 0 global:editInMemory("fightCount", fights + 1) Copier -- Afficher le temps de session local elapsed = global:elapsedTime() local minutes = math.floor(elapsed / 60000) global:printMessage("Session en cours depuis: " .. minutes .. " minutes") -- Executer une action toutes les 30 minutes local lastAction = global:remember("lastBankTime") or 0 if global:elapsedTime() - lastAction > 1800000 then -- 30 min global:editInMemory("lastBankTime", global:elapsedTime()) -- Aller en banque... end Copier -- Exporter la documentation local doc = global:exportAllPublicMethods() global:printMessage(doc) -- Utile pour le debug/developpement Copier -- Recuperer les infos du dernier combat local fightEnd = global:fightMessage() if fightEnd then global:printMessage("Combat #" .. fightEnd.fightCounter) global:printMessage("XP: " .. (fightEnd.xpBonus or 0)) -- Afficher les loots if fightEnd.results then for _, result in ipairs(fightEnd.results) do if result.rewards and result.rewards.objects then for _, obj in ipairs(result.rewards.objects) do global:printMessage("Loot: " .. obj.objectGID .. " x" .. obj.quantity) end end end end end Copier -- Arreter apres X combats if global:getCountFight() >= 100 then global:printSuccess("Objectif atteint: 100 combats!") global:finishScript() end -- Arreter en cas de probleme if character:lifePercent() < 10 then global:printError("Vie trop basse, arret du script!") global:finishScript() end Copier local alias = global:getAlias() global:printMessage("Alias actuel: " .. alias) Copier -- Lister les scripts Lua local scriptDir = global:getCurrentScriptDirectory() local scripts = global:getAllFilesNameInDirectory(scriptDir, "lua") for _, script in ipairs(scripts) do global:printMessage("Script: " .. script) end -- Lister tous les fichiers local allFiles = global:getAllFilesNameInDirectory("C:/Snowbot/configs") Copier local controller = global:getController() -- Utiliser les methodes du controller... Copier local fights = global:getCountFight() global:printMessage("Combats: " .. fights) -- Arreter apres X combats if fights >= 50 then global:printSuccess("50 combats atteints!") global:disconnect() end Copier local gathers = global:getCountGather() global:printMessage("Recoltes: " .. gathers) -- Stats de session local fights = global:getCountFight() global:printMessage("Session: " .. fights .. " combats, " .. gathers .. " recoltes") Copier local dir = global:getCurrentDirectory() global:printMessage("Dossier Snowbot: " .. dir) Copier local proxy = global:getCurrentProxyAddress() if proxy ~= "" then global:printMessage("Proxy actif: " .. proxy) else global:printMessage("Pas de proxy") end Copier local scriptDir = global:getCurrentScriptDirectory() global:printMessage("Script dans: " .. scriptDir) -- Charger un fichier de config relatif local configPath = scriptDir .. "/config.json" Copier -- Recuperer un compteur partage local totalFights = global:GetInGlobalMemory("totalFights") if totalFights then global:printMessage("Total equipe: " .. totalFights .. " combats") end -- Verifier si le boss est pret local bossReady = global:GetInGlobalMemory("bossReady") if bossReady == true then global:printMessage("Le boss est pret, on peut y aller!") end Copier local proxyConfig = global:getProxyConfig() if proxyConfig ~= "" then global:printMessage("Config proxy: " .. proxyConfig) end Copier local replies = global:getReplies() global:printMessage("Reponses disponibles: " .. #replies) for i, replyId in ipairs(replies) do global:printMessage(" " .. i .. ": ID=" .. replyId) end -- Selectionner la premiere reponse if #replies > 0 then npc:reply(replies[1]) end Copier if global:isBoss() then local members = global:getTeamMembers() global:printMessage("Equipe (" .. #members .. " membres):") for _, name in ipairs(members) do global:printMessage(" - " .. name) end end Copier if global:isBoss() then local ids = global:getTeamMembersIds() global:printMessage("IDs equipe: " .. table.concat(ids, ", ")) end Copier local names = global:getTeamMembersNames() Copier if global:isBoss() then local usernames = global:getTeamMembersUsernames() for _, username in ipairs(usernames) do global:printMessage("Compte: " .. username) end end Copier local token = global:getToken() global:printMessage("Token: " .. token) Copier -- Grouper 3 mules avec le compte actuel comme chef global:groupCharacters({"[email protected]", "[email protected]", "[email protected]"}) -- Verification avant groupage if not global:isBoss() then global:groupCharacters({"compte2", "compte3"}) global:printSuccess("Equipe creee!") end Copier if global:isBoss() then global:printMessage("Envoi des invitations...") global:inviteTeam() global:delay(3000) -- Attendre que tout le monde accepte end Copier if global:isBoss() then global:printMessage("Je suis le chef d'equipe") -- Actions reservees au chef global:inviteTeam() else global:printMessage("Je suis une mule") -- Attendre les ordres du chef end Copier if global:isInFight() then global:printMessage("En combat, attente...") return end -- Action hors combat map:gather() Copier -- Verifier si un membre est dans le groupe local memberId = 123456789 if global:isInParty(memberId) then global:printMessage("Membre present dans le groupe") else global:printMessage("Membre absent, envoi d'invitation...") end Copier -- Verifier par nom de personnage if global:isInTeam("MonMule") then global:printMessage("MonMule fait partie de l'equipe") end -- Verifier par username if global:isInTeam("[email protected]") then global:printMessage("Ce compte est dans l'equipe") end Copier if global:isKoliServer() then global:printMessage("Mode Kolizeum actif") end Copier if global:isRegisteredInKoli() then global:printMessage("En attente de match Kolizeum...") end Copier if global:isScriptPlaying() then global:printMessage("Script actif") end Copier if not global:isStuffForKoli() then global:printError("Equipement incomplet pour le Kolizeum!") global:printMessage("Risque de ban Koli si vous jouez ainsi") return end global:printSuccess("Equipement OK pour le Kolizeum") Copier global:joinBoss() Copier if global:isBoss() then global:printMessage("Rassemblement de l'equipe!") global:joinBoss() global:delay(10000) -- Attendre que tout le monde arrive end Copier global:lastModeratorMessage() Copier local modMsg = global:lastModeratorMessage() if modMsg then global:printError("Attention! Message modo: " .. (modMsg.content or "")) global:disconnect() end Copier global:leaderAccountController() Copier local leaderCtrl = global:leaderAccountController() if leaderCtrl then -- Acceder aux infos du chef end Copier global:leaveDialog() Copier -- Apres avoir termine avec un NPC npc:reply(reponseId) global:delay(500) global:leaveDialog() Copier global:loadAndStart(file, breakCurrentScript) Copier -- Charger un script de banque if inventory:currentPods() > inventory:maxPods() * 0.9 then global:loadAndStart("C:/Scripts/bank.lua", true) end Copier global:loadConfiguration(config) Copier -- Charger une config de farming global:loadConfiguration("C:/Snowbot/configs/farming.json") Copier global:LoadConfigurationWithoutScript(config) Copier -- Changer la config de combat sans recharger le script global:LoadConfigurationWithoutScript("C:/Snowbot/configs/fight_config.json") Copier global:openMitm() Copier if global:openMitm() then global:printSuccess("MITM active, Dofus demarre") else global:printError("Impossible d'activer le MITM") end Copier global:password() Copier local pass = global:password() Copier global:playAudio(file) Copier -- Alerte sonore quand moderateur detecte if global:checkModerator(5) then global:playAudio("C:/Snowbot/sounds/alert.wav") global:disconnect() end Copier -- Message rouge global:printColor("ATTENTION!", "#FF0000") -- Message vert global:printColor("Succes!", "#00FF00") -- Message personnalise global:printColor("Info importante", "#FFA500") -- Orange Copier if character:lifePercent() < 20 then global:printError("Vie critique!") end Copier global:printMessage("Script demarre") global:printMessage("Map: " .. map:currentMap()) Copier if map:fight() then global:printSuccess("Combat lance!") end Copier if global:proxyIsEnabled() then global:printMessage("Proxy: " .. global:getCurrentProxyAddress()) else global:printMessage("Connexion directe (pas de proxy)") end Copier -- Delai aleatoire humanise local delay = global:random(1000, 3000) global:delay(delay) -- Choix aleatoire local choice = global:random(1, 4) if choice == 1 then map:changeMap("top") elseif choice == 2 then map:changeMap("bottom") end Copier -- Mode semi-automatique if global:rcAskFight() then map:fight() end Copier -- Mode semi-automatique if global:rcAskGather() then map:gather() end Copier -- Reconnexion dans 2 heures global:reconnect(2) -- Reconnexion dans 30 minutes (0.5 heure) global:reconnect(0.5) Copier -- Reconnexion dans 30 minutes global:reconnectBis(30) Copier -- Reconnexion dans 60 secondes global:reconnectSec(60) Copier -- Reconnexion rapide dans 30 secondes global:reconnectWithToken(30) Copier -- Recharger apres modification global:printMessage("Rechargement du script...") global:reloadScript() Copier -- Recuperer un compteur local fights = global:remember("fightCount") if fights then global:printMessage("Combats: " .. fights) else global:addInMemory("fightCount", 0) end Copier -- Reset au debut de session function started() global:resetCountFight() global:resetCountGather() end Copier global:resetCountGather() global:printMessage("Compteur de recoltes reinitialise") Copier -- Redemarrer avec rechargement global:RestartScript(true) Copier -- Se mettre en prive pendant le bot global:setPrivate(true) -- Revenir disponible global:setPrivate(false) Copier if global:isBoss() then -- Mettre toutes les mules en prive global:setPrivateTeam(true) end Copier local ctrl = global:thisAccountController() Copier if global:isBoss() then -- Degrouper un compte specifique global:ungroupCharacters({"[email protected]"}) -- Degrouper toute l'equipe global:ungroupCharacters() end Copier if global:unregisterFromKoliIfRegistered() then global:printSuccess("Desinscrit du Kolizeum") end Copier local user = global:username() global:printMessage("Connecte avec: " .. user) ---