[TUTORIEL] Gestion des résistances

    Publicités

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)

Dampen_59

Membre
Feb 3, 2019
22
37
84
Discord
Dampen59 #4187
Bonjour,
Dans la série tutos, voici la gestion des résistances dans vos intelligences artificielles.
Le code est beaucoup commenté pour que vous en compreniez chaque lignes.

Attention : le code ne comprend pas la partie de vérification si la cible est ennemie, ni si celle-ci est une invocation !



Code:
    local entitiesList = fight:getAllEntities()
    local entitiesCount = fight:getEntitiesCount()
    local cellIDEnnemy = fight:getNearestEnemy()
   
    for i = 0, entitiesCount - 1 do
        if cellIDEnnemy == entitiesList[i].CellId then -- Ici, c'est l'entité que l'on souhaite attaquer

            -- On stocke dans des variables pour plus de visibilité dans le code
            -- le pourcentage de résistance dans chaque élément
            local resNeutre = entitiesList[i].Stats.neutralElementResistPercent
            local resTerre = entitiesList[i].Stats.earthElementResistPercent
            local resEau = entitiesList[i].Stats.waterElementResistPercent
            local resAgi = entitiesList[i].Stats.airElementResistPercent
            local resIntel = entitiesList[i].Stats.fireElementResistPercent
           
            -- Enfin, on stocke les valeurs dans un tableau sous la forme
            -- Neutre - Terre - Eau - Agilité - Intelligence
            local resTable = {resNeutre, resTerre, resEau, resAgi, resIntel}
           
            -- On parcours le tableau à la recherche de la résistance la plus basse
            local resistance = 100000 -- on met une valeur incroyablement grande (on va du plus grand au plus petit)
            local index -- permettra de stocker l'index, et donc de savoir dans quel élément il faut frapper
           
           
            for k, v in ipairs(resTable) do -- Pour chaque valeur dans le tableau
                if v < resistance then -- Si v (valeur actuelle parcourue) est inférieure à resistance
                    resistance = v -- On change la valeur de resistance par v
                    index = k -- On stocke l'index, qui servira dans le "if" d'en dessous
                end
            end
           
            -- Comme il n'y a pas de "switch case" natif en LUA, on passe par un "if"
            if index == 1 then
                -- Plus faible = neutre
            elseif index == 2 then
                -- plus faible = terre
            elseif index == 3 then
                -- plus faible = eau
            elseif index == 4 then
                -- plus faible = agilité
            elseif index == 5 then
                -- plus faible = intelligence
            end
           
        end
    end

Si vous avez des questions ou des remarques, comme d'habitude, n'hésitez pas à apposer une réponse sur ce sujet.​
 
Last edited:
  • Like
Reactions: Wazidd, seshiruu, izumisan and 2 others

Nats8

Membre actif
Apr 18, 2019
190
2,688
154
gg pour le tuto, ça va en aider plus d'un. Et c'est gratuit en plus, rare de nos jours. Encore gg