Sujet n°203
Posté par Crystal le 20 Jan - 19:38 (2008)
Titre : [Tuto] Taille en cm d'un Magicarp
Code:
module POKEMON_S
  class Pokemon

    def magikarp_length
      if @id == 129 
        dv_atk2 = (@dv_atk*15)/31.0 
        dv_dfe2 = (@dv_dfe*15)/31.0 
        dv_spd2 = (@dv_spd*15)/31.0 
        dv_ats2 = (@dv_ats*15)/31.0 
        dv_dfs2 = (@dv_dfs*15)/31.0 
        b = (16*dv_atk2) + dv_dfe2 
        c = (16*dv_spd2) + ((dv_ats2 + dv_dfs2) / 2.0) 
        e = [110,54,198,150,30,46,198,94,110,246,198,186,130,230] 
        d = [0,1,2,10,30,69,127,186,225,244,252,254,255,255] 
        f = [1.0,2.0,4.0,20.0,50.0,100.0,150.0,150.0,100.0,50.0,20.0,5.0,2.0,1.0] 
        a = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 
        if b < d[0] 
          da = d[0] 
          ea = e[0] 
          fa = f[0] 
          aa = a[0] 
        elsif b < d[1] 
          da = d[1] 
          ea = e[1] 
          fa = f[1] 
          aa = a[1] 
        elsif b < d[2] 
          da = d[2] 
          ea = e[2] 
          fa = f[2] 
          aa = a[2] 
        elsif b < d[3] 
          da = d[3] 
          ea = e[3] 
          fa = f[3] 
          aa = a[3] 
        elsif b < d[4] 
          da = d[4] 
          ea = e[4] 
          fa = f[4] 
          aa = a[4] 
        elsif b < d[5] 
          da = d[5] 
          ea = e[5] 
          fa = f[5] 
          aa = a[5] 
        elsif b < d[6] 
          da = d[6] 
          ea = e[6] 
          fa = f[6] 
          aa = a[6] 
        elsif b < d[7] 
          da = d[7] 
          ea = e[7] 
          fa = f[7] 
          aa = a[7] 
        elsif b < d[8] 
          da = d[8] 
          ea = e[8] 
          fa = f[8] 
          aa = a[8] 
        elsif b < d[9] 
          da = d[9] 
          ea = e[9] 
          fa = f[9] 
          aa = a[9] 
        elsif b < d[10] 
          da = d[10] 
          ea = e[10] 
          fa = f[10] 
          aa = a[10] 
        elsif b < d[11] 
          da = d[11] 
          ea = e[11] 
          fa = f[11] 
          aa = a[11] 
        elsif b < d[12] 
          da = d[12] 
          ea = e[12] 
          fa = f[12] 
          aa = a[12] 
        elsif b < d[13] 
          da = d[13] 
          ea = e[13] 
          fa = f[13] 
          aa = a[13] 
        end 
        bc = (b*256.0) + c 
        de = (da*256.0) + ea 
        lenght = (aa*100.0+(((((bc+65536.0-de)%65536.0)/fa))%256.0))/10.0 
        round_lenght = (lenght % 0.1) 
        lenght -= round_lenght 
        return lenght 
      else 
        return 0 
      end 
    end 
  end 
end










Insérez ceci en tant que nouveau script Magikarp Lenght.Lorsque le Pokémon est représenté par l'ID dans la condition (ici 129, donc Magicarp), alors le code calcule selon ses DV la taille du Magicarp. C'est donc aussi un attribut utilisable comme n'importe quelle information sur un Pokémon.Vous pouvez très bien modifier la condition pour l'ID et mettre un type, ou plusieurs ID de Pokémon... Référez-vous au manuel pour connaître les propriétés des Pokémon. Cet attribut est donc magikarp_lenght. Pour un Pokémon qui ne respecte pas la condition, magikarp_lenght est 0. Pour appeler la fonction, il faut insérer un script pokemon.magikarp_lenght

La taille max d'un Magicarp est de 162.5 cm.

La formule est comme suit:

- Le jeu recalcule les DV pour les mettre sur 15 (vu que la formule est issue de OAC).
- Il effectue des opérations avec les DV pour former b et c.
- Les tables de valeurs e, d, f et a sont créées.
- La valeur b est comparée avec chaque valeur de d.
- Si b est inférieur à d, alors le jeu sélectionne toutes les valeurs des autres tableaux à la même position que la valeur d actuellement comparée.
- À l'aide d'une formule, le jeu forme les valeurs bc et de.
- La formule finale est exécutée et le jeu arrondit la valeur au dixième.

Vous pouvez très bien adapter ce code pour d'autres situations, mais dans ce cas il faut revoir la formule.

Posté par Sphinx le 20 Jan - 19:48 (2008)
pour adapter ton script à une liste d'ID ou de types, il faut mettre :

if @id == 129,130,151
(pour une liste d'ID)

ou

if @type == 1,3,5
(pour une liste de types)

Posté par valpokbest le 20 Jan - 20:02 (2008)
ok ça peut servir.

Posté par Sphinx le 20 Jan - 20:42 (2008)
(^^ en fait c'était une question xD juste oublié le "?" comme un boulet ><)

Posté par Crystal le 20 Jan - 20:49 (2008)
Tu dois écrire:

if @id == 129 or @id == 130 or @id == 151

Posté par Sphinx le 20 Jan - 21:01 (2008)
ok Imbécile heureux donc pour une liste de type :

if @type == 129 or @type == 130 or @type == 151

Posté par Sir Kyane von Schnitzel le 29 Mar - 21:23 (2008)
Crystal la tu m'apprends un truc.Ca fait des années que je joue a OAC et j'ai jamais fait attention que la taille de magicarpe pouvait varier.sinon bon script pour ceux qui veulent faire un remake de OAC.Clin d'œil foireux