[TUTORIEL] Gestion des résistances

    Publicités

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

Dampen_59

Dampen_59

Level 2
Level 1
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
N

Nats8

Level 4
Level 3
Level 2
Level 1
Apr 18, 2019
188
2,764
154
gg pour le tuto, ça va en aider plus d'un. Et c'est gratuit en plus, rare de nos jours. Encore gg