Introduction

Découvrons ensemble les bases de l'Intelligence Artificielle Avancée !

A quoi sert l'intelligence artificielle?

Un bot est un robot qui réalise des tâches prédéfinies par son créateur. Il permet de combattre des monstres, mais pour cela une intelligence artificielle (IA) est requise.

Si vous utilisez AnkaBot, vous avez la chance de configurer les sorts depuis votre interface AnkaBot. Mais nous allons encore plus loin ! Pour les plus expérimentés d'entre vous, vous pouvez réaliser votre propre IA depuis l'API que nous vous fournissons.

Si vous souhaitez faire une IA basique, nous vous recommandons de passer par l'interface AnkaBot, beaucoup plus adaptée pour des tâches simples.

Comment coder son IA rapidement ?

Vous avez le choix entre deux façons pour utiliser une IA avancée :

  • Coder son IA sur un fichier à part.

  • Coder son IA sur le même script du bot.

La première façon est préférable et suffisante, sauf si vous voulez profiter du mode développeur à l'intérieur de l'IA.

L'exemple de l'IA qu'on va présenter ci-dessous est celui d'un Enutrof qui souhaite avancer vers l'ennemi le plus proche ainsi qu'attaquer 3 fois de suite avec le sort Lancer de Pièces.

1. IA intégrée dans un fichier à part

  • Créer un fichier ENU.lua dans le dossier AI près de AnkaBot.exe.

  • Ouvrez le fichier ENU.lua et insérer le bout de code suivant :

function Main()
		-- Je vérifie dans un premier temps que c'est bien à moi de jouer :
		if (fightCharacter:isItMyTurn() == true) then
		
				-- J'avance vers mon ennemi le plus proche
				fightAction:moveToWardCell(fightAction:getNearestEnemy())
				
				-- Je vais désormais tenter à 3 reprises de lancer le sort Lancer de Pièces
				for i = 1, 3 do
				
						-- Cellule de mon ennemi le plus proche
						local cellId = fightAction:getNearestEnemy()
						
						-- Identifiant du sort "Lancer de Pièces"
						local spellId = 13338
						
						-- Je vérifie si je peux lancer mon sort
						if(fightAction:canCastSpellOnCell(fightCharacter:getCellId(),spellId,cellId) == 0) then 
								-- Je lance mon sort sur la cible
								fightAction:castSpellOnCell(spellId,cellId)
						end
				end
		end
end

La fonction "Main" sera lue lors de chaque début de tour de votre bot. Ensuite nous avons préféré renseigner l'identifiant du sort plutôt que son nom générique pour éviter les erreurs liées à l'encodage de votre script, les espaces etc...

Vous pouvez donc retrouver la liste des sorts ici :

pageIdentifiants Dofus PCpageIdentifiants Dofus Touch
  • Ajouter la ligne suivante tout en haut de votre script principale :

AI_FILE = "ENU.lua"
  • Et finalement, indiquez à AnkaBot que vous souhaiter utiliser ce type d'IA :

  • Recharger votre script, et c'est bon votre IA sera prise en compte lors de vos combats.

2. IA intégrée sur le même script du bot

Comme vous pouvez le constater ci-dessous, il suffit d'ajouter la fonction fightManagement dans le script de votre bot.

function move()
	return {
			{map = "191105026", path = "left" },
			{map = "191104000", path = "bottom"},
			{map = "192415750", path = "409" },
			{map = "84677894", path = "bottom" },
			{map = "84677893", path = "bottom" },
			{map = "84677892", path = "left" },
			{map = "84677380", path = "top" },
			{map = "84677381", path = "left" },
	}
end

function fightManagement()
		-- Je vérifie dans un premier temps que c'est bien à moi de jouer :
		if (fightCharacter:isItMyTurn() == true) then
		
				-- J'avance vers mon ennemi le plus proche
				fightAction:moveToWardCell(fightAction:getNearestEnemy())
				
				-- Je vais désormais tenter à 3 reprises de lancer le sort Lancer de Pièces
				for i = 1, 3 do
				
						-- Cellule de mon ennemi le plus proche
						local cellId = fightAction:getNearestEnemy()
						
						-- Identifiant du sort "Lancer de Pièces"
						local spellId = 13338
						
						-- Je vérifie si je peux lancer mon sort
						if(fightAction:canCastSpellOnCell(fightCharacter:getCellId(),spellId,cellId) == 0) then 
								-- Je lance mon sort sur la cible
								fightAction:castSpellOnCell(spellId,cellId)
						end
				end
		end
end

La fonction "fightManagement" sera lue lors de chaque début de tour de votre bot. Ensuite nous avons préféré renseigner l'identifiant du sort plutôt que son nom générique pour éviter les erreurs liées à l'encodage de votre script, les espaces etc...

Vous pouvez donc retrouver la liste des sorts ici :

pageIdentifiants Dofus PCpageIdentifiants Dofus Touch

Puis vous devez indiquez à AnkaBot que vous souhaitez utiliser une IA avancée de ce type :

Dernière mise à jour