Structure d'un script Lua¶
Structure d'un script Lua MoonBot : fonction move(), bank(), phoenix(), fightManagement(), champs d'un step.
19 fonctions dans ce namespace.
Index¶
function move()function bank()function phoenix()function prefightManagement()function fightManagement()Champs d'un stepgather = trueforcegather = truefight = trueforcefight = truesale = truenpcBank = truecraft = truephoenix = truecustom = functionlockedCustompath (directions)path (cellule)path (zaap)
Référence¶
function move()¶
Fonction principale appelee en boucle. Retourne une table de trajet. Chaque step est execute quand la map du bot correspond au champ 'map'.
function bank()¶
Appelee quand les pods depassent le seuil. Retourne un trajet vers la banque.
function phoenix()¶
Appelee en mode fantome (mort). Retourne un trajet vers un phenix (statue gfx 542).
function prefightManagement()¶
function prefightManagement(positionsChallengers, positionsDefenders)
-- Choisir une cellule de placement
fightAction:chooseCell(134)
-- Si occupee par un allie : echanger sa place
local f = fight.getFighterOnCell(134)
if f and not f.isEnemy and f.id ~= fight.myId() then
fightAction:exchangePlace(f.id)
end
end
Appelee pendant la phase de placement (avant le combat). Necessite la tactique "Script". Recoit deux tables : positionsChallengers (cellules de placement de ton equipe, {cellId = true}) et positionsDefenders (cellules ennemies). Utilise fightAction:chooseCell(cellId) pour te placer, fightAction:exchangePlace(fighterId) pour echanger ta place avec un allie.
function fightManagement()¶
function fightManagement()
local enemy = fightAction.getNearestEnemy()
if enemy then
fightAction.castSpellOnCell(3, enemy.cellId)
end
fightAction.passTurn()
end
Appelee a chaque tour de combat. Necessite la tactique "Script". Gere les actions de combat manuellement (sorts, deplacement, passer le tour). Appelee uniquement quand c'est ton tour.
Champs d'un step¶
{ map = "x,y", path = "direction", gather, forcegather, fight, forcefight, sale, npcBank, craft, phoenix, custom }
map (requis), path, gather, forcegather, fight, forcefight, sale, npcBank, craft, phoenix, custom. Ordre d'execution : gather/forcegather → fight/forcefight → custom → phoenix → npcBank → sale → craft → path.
gather = true¶
Recolte toutes les ressources sur la map. Boucle jusqu'a epuisement ou pods pleins.
forcegather = true¶
Comme gather mais reste sur la map : quand plus rien a recolter, attend le respawn et recolte immediatement des qu'une ressource reapparait (sans delai de reaction — ideal pour les ressources disputees). Ne quitte la map que si pods pleins (banque via la suite du trajet), combat ou changement de map.
fight = true¶
Combat les groupes de monstres (respecte min/max/interdits/obligatoires). Si plus de monstres ou combat echoue, passe a la suite.
forcefight = true¶
Comme fight mais pour les donjons : si aucun monstre disponible ou combat echoue (vole par un autre joueur), attend et retry au lieu de passer a la suite. Boucle jusqu'a avoir combat tous les monstres de la salle.
sale = true¶
Ouvre l'HDV et vend automatiquement selon la config de l'onglet HDV.
npcBank = true¶
Ouvre la banque via PNJ. Depose/retire selon la config Banque. Peut etre un ID : npcBank = 1234.
craft = true¶
Artisanat automatique. Le bot detecte les ateliers sur la map, ouvre chaque atelier, calcule le max craftable depuis l'inventaire, depose les ingredients, lance le craft. Necessite la config de l'onglet Craft.
phoenix = true¶
Utilise la statue phenix (gfx 542) pour ressusciter si en mode fantome.
custom = function¶
Execute une fonction Lua personnalisee sur cette map.
lockedCustom¶
Custom avec coordination de groupe. Modes : "leader_then_mules" (chef puis mules), "leader_only", "mules_only", "one_by_one" et "all_together". Signature etendue : lockedCustom(mode, delay_ms, func) pour remplacer le delai configure.
path (directions)¶
Change de map dans la direction indiquee.
path (cellule)¶
Deplace vers la cellule (bordure) pour changer de map.
path (zaap)¶
Selectionne une destination dans un menu zaap deja ouvert. Cette etape envoie uniquement WU : elle n'approche pas du zaap et ne l'ouvre pas. Pour un usage autonome, appeler d'abord map.openZaap(), puis map.useZaap(mapId).