Sujet n°4530
Posté par Angi-MK le 18 Juil - 23:45 (2009)
Titre : EXP gagné a virgule... ?
Nouveau bug, pourtant je touche même pas aux script... bref le voila, tout est écrit:


Le nombre de points gagner est normalement entier, pas flottant Clin d'œil foireux .

Posté par Krosk le 19 Juil - 00:17 (2009)
ouais, et c'est exceptionnel ? combat dresseur ? combat sauvage ? utilisé des attaques particulières ? psp0.7 ou 4G+?

Posté par Angi-MK le 19 Juil - 05:56 (2009)
Non, ça se répète a chaque combats, dresseurs, sauvages, tout ce que tu veux !
J'utilise uniquement psp0.7.

Posté par pokechii le 19 Juil - 10:12 (2009)
J'ai eu le même problème mais pour le niveau des pokemon sauvages, genre "niveau 2,524937543".
J'ai cherché dans les scripts et à l'endroit ou le niveau était défini j'ai remplacé "level" par "Integer(level)".
Il faudrait trouver la ligne où les points d'expérience gagnés sont définis.

Posté par Krosk le 19 Juil - 12:37 (2009)
mk >> depuis quand le bug? ca t'es arrivé au début?

Posté par Pαlвσlѕку le 19 Juil - 13:44 (2009)
J'utilise PSP0.7 et je n'ai jamais eu ce bug.

Posté par Sphinx le 19 Juil - 13:45 (2009)
Moi non plus, je n'ai jamais eu ce genre de bug Mollasse enragé

Posté par Pαlвσlѕку le 19 Juil - 14:15 (2009)
Tu as dû forcément modifier quelques choses, même une infime modification peut produire ce genre de bug.

Par exemple :
>> x / 1 donnera obligatoirement un nombre entier même si x est un nombre flottant.

>> x / 1.0 peut donner un nombre entier, ou flottant. Cela dépend si x est flottant oui ou non. Ici, le nombre n'aura qu'un seul chiffre après la virgule.

Posté par Krosk le 19 Juil - 14:21 (2009)
Bah surtout que je transforme moi même l'expérience gagnée en Entier, quoi...

dans le script Pokemon, ligne 687
Code:
    def exp_calculation(battle_list, level, number = 1, type = 1, exp_share_number = 0, out_battle = 1)
      # Formule de base
      exp_sup = Integer(battle_list[6] * level * type / 7) / number
      # Formule multi_exp
      if exp_share_number > 0
        exp_share_hold = Item.data(item_hold)["expshare"] ? 1 : 0
        value = level*battle_list[6]/14
        exp_sup = (Integer(value/number)*out_battle + Integer(value/exp_share_number)*exp_share_hold)*type
      end
      return exp_sup
    end


remplace (temporairement) par ca :
Code:
    def exp_calculation(battle_list, level, number = 1, type = 1, exp_share_number = 0, out_battle = 1)
      # Formule de base
      exp_sup = Integer(battle_list[6] * level * type / 7) / number
      # Formule multi_exp
      if exp_share_number > 0
        exp_share_hold = Item.data(item_hold)["expshare"] ? 1 : 0
        value = level*battle_list[6]/14
        exp_sup = (Integer(value/number)*out_battle + Integer(value/exp_share_number)*exp_share_hold)*type
      end
      print "number : #{number} exp_sup : #{exp_sup}"
      return exp_sup
    end

Posté par Pαlвσlѕку le 19 Juil - 14:32 (2009)
Je confirme que l'expérience est un nombre entier. Après avoir pris le morceau de Krosk, voici ce qui est apparu à l'écran.

Code:
1 exp_sup : 292

Posté par Sphinx le 19 Juil - 15:44 (2009)
Palbolsky a écrit:
Par exemple :
>> x / 1 donnera obligatoirement un nombre entier même si x est un nombre flottant.

>> x / 1.0 peut donner un nombre entier, ou flottant. Cela dépend si x est flottant oui ou non. Ici, le nombre n'aura qu'un seul chiffre après la virgule.


faux Clin d'œil foireux


x (+ - * /) ENTIER donnera un entier ou un flottant selon le type de x
x (+ - * /) DECIMAL donnera toujours un décimal