Sujet n°8072
Posté par spirow le 6 Oct - 20:05 (2010)
Titre : [OK] Pension
Bonsoir,
Voilà mon problème: J'ai le script pension DAYCAR, vous allez me dire, ben il fonctionne et alors ?
Ben non ...
Je l'ai testé, je peu peu mettre un pokémon mal ou femelle ou les deux, jusque la tout va bien, ensuite je parle a la vieille, elle me dit qu'il ne s'aime pas...
J'attend plusieurs minutes, quand je reviens elle me dit qu'il s'entende et la PAF !! Sa bug -_-' !

Bug dans le script DAYCAR ligne 100, voila la ligne:

set_egg(Pokemon.new.new_egg(breed_female, breed_male))

Et voila le log:

---------- Erreur de script : DAYCARE ----------
----- Type
NoMethodError
----- Message
- ARGS - [#<POKEMON_S::Pokemon:0x9c30140 @base_spd=55, @code=1417178055, @gender=1, @dfs_plus=0, @rubans=[], @level=1, @battle_list=[0, 0, 0, 0, 0, 1, 92], @dv_spd=21, @effect=[], @skills_allow=[6, 10, 11, 17, 18, 21, 23, 27, 28, 30, 32, 42, 43, 44, 45, 58, 78, 82, 83, 87, 90], @dfs=6, @item_hold=0, @fight=[0, 0], @base_atk=55, @battle_stage=[0, 0, 0, 0, 0, 0, 0], @dfe_plus=0, @hp=12, @male_rate=50, @dv_atk=30, @ton=(0.000000, 0.000000, 0.000000, 0.000000), @trainer_id="55541", @skills_set=[#, #, #, #], @skills_table=[[33, 1], [39, 1], [270, 1], [28, 8], [45, 15], [98, 22], [44, 29], [226, 36], [36, 43], [387, 50], [376, 57]], @spd=6, @hp_plus=0, @ability_token=nil, @type2=0, @table_stats=[100, 100, 100, 100, 100, 100], @medaille=0, @base_ats=45, @shiny=true, @spd_plus=0, @battler_id=133, @dv_ats=24, @effect_count=[], @loyalty=170, @id=133, @exp_type=1, @ats_plus=0, @table_type=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0, 1.0, 1.0, 1.0, 1.0, 1.0], @base_dfe=50, @form=0, @female_rate=50, @max_hp=12, @dv_dfe=31, @atk=5, @ball_data=["POKé BALL", 1, "ball1.png", "ballopen1.png", (255.000000, 210.000000, 233.000000, 255.000000)], @capturable=true, @ats=6, @trainer_name="Alex", @status_count=0, @base_hp=55, @egg=true, @atk_plus=0, @step_remaining=5120, @rareness=45, @dv_hp=22, @status=0, @vaudou=false, @base_dfs=65, @dfe=6, @id_bis=133, @given_name="OEUF", @dv_dfs=31, @ability_active=false, @ability=92, @table_skill_type=[100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100], @nature=["Assuré", 90, 110, 100, 100, 100], @exp=0, @type1=1>]
undefined method `set_egg' for POKEMON_S::Daycare:Class
----- Position dans DAYCARE
Ligne 100
----- Backtrace
Script : DAYCARE | Ligne : 100 | Méthode : in `sequence'
Script : Pokemon_Party | Ligne : 330 | Méthode : in `increase_steps'
Script : Game_Player | Ligne : 90 | Méthode : in `increase_steps'
Script : Game_Character 3 | Ligne : 25 | Méthode : in `move_down'
Script : Game_Player | Ligne : 20 | Méthode : in `update'
Script : Scene_Map | Ligne : 52 | Méthode : in `alias_update'
Script : Scene_Map | Ligne : 48 | Méthode : in `loop'
Script : Scene_Map | Ligne : 67 | Méthode : in `alias_update'
Script : MAPPANEL | Ligne : 90 | Méthode : in `old_update'
Script : TempsJourNuit | Ligne : 248 | Méthode : in `update'
Script : Scene_Map | Ligne : 25 | Méthode : in `old_main'
Script : Scene_Map | Ligne : 19 | Méthode : in `loop'
Script : Scene_Map | Ligne : 30 | Méthode : in `old_main'
Script : TempsJourNuit | Ligne : 237 | Méthode : in `main'
Script : Main | Ligne : 49

EDIT: J'ai refait un test, quand les pokémons ne s'entendent pas sa marche, mais des qu'ils s'entendent sa bug :/

Posté par spirow le 6 Oct - 20:25 (2010)
Dsl, je me permet ce up afin d'aider ceux qui ont le même problème, je pense que c'est juste une erreur d'écriture du script ^^
J'ai regarder le script, en realité la ligne a coriger est la ligne 96:

$game_variables[7][4] += 1        (je pense que le + est une erreur d'ecriture, j'ai donc remplacé par un = et sa marche maintenant)

remplacer la par:

$game_variables[7][4] == 1

Bredan est ce que c'est encore un bidouillage chanceux ou je peu laisser comme sa >< ?
Deplus j'ai remarqué d'autre += plus loin dans le script:

# Augmentation d'exp
      if breed_male.is_a?(Pokemon)
        breed_male.exp += 1
        while breed_male.level_check
          breed_male.silent_level_up
        end
      end
      if breed_female.is_a?(Pokemon)
        breed_female.exp += 1
        while breed_female.level_check
          breed_female.silent_level_up
        end
      end
    end

Dois-je mettre == ou laisser comme sa ?

Merci d'avance.

Posté par Brendan75 le 7 Oct - 06:34 (2010)
C'est encore un bidouillage dangereux, la commande " += " existe, il s'agit d'ajouter un nombre. Par exemple si on a var=1 puis var += 3, alors var=4 (je sais pas si c'est clair X) ).
La commande " == " est une condition, ça n'a donc rien à voir.

Posté par spirow le 7 Oct - 08:26 (2010)
xd, dans ce cas, qu'est ce que je dois coriger du script pour qu'il fonctionne ?

Posté par Brendan75 le 7 Oct - 10:46 (2010)
Bah en fait, ma ligne 100, c'est :
Code:
set_breed_egg(Pokemon.new.new_egg(breed_female, breed_male))

et elle viens de PSP DS, il y a du y avoir une mise à jour, change ton script contre un plus récent. ^^

Posté par Suicune31 le 7 Oct - 12:46 (2010)
Dès la première apparition de ce script, il avait déjà une erreur, mais Krosk l'a corriger aussi tôt.

Voici le script DAYCARE de PSP DS, je n'ai pas de problème avec.

Spoiler
Code:
 #==============================================================================
# ■ DAYCARE
# Pokemon Script Project - Krosk
# 27/08/08
#-----------------------------------------------------------------------------
# Fonctions supplémentaires dans la classe Interpreter
#   qui assure les fonctions de Pension
#-----------------------------------------------------------------------------
# $game_variables[7]
#   0 : male
#   1 : femelle
#   2 : taux de compatibilité
#   3 : oeuf résultant
#   4 : nombres de pas avant ponte
#-----------------------------------------------------------------------------

module POKEMON_S
 
  class Daycare
    def self.breed_male
      if not $game_variables[7].is_a?(Array)
        $game_variables[7] = []
      end
      if not $game_variables[7][0].is_a?(Pokemon)
        return nil
      end
      return $game_variables[7][0]
    end
 
    def self.breed_female
      if not $game_variables[7].is_a?(Array)
        $game_variables[7] = []
      end
      if not $game_variables[7][1].is_a?(Pokemon)
        return nil
      end
      return $game_variables[7][1]
    end
    
    def self.breed_egg
      if not $game_variables[7].is_a?(Array)
        $game_variables[7] = []
      end
      if not $game_variables[7][3].is_a?(Pokemon)
        return nil
      end
      return $game_variables[7][3]
    end
    
    # ------------------------------------------------------
    # set_male
    #   enregistrement du Pokémon dans la pension
    # ------------------------------------------------------
    def self.set_breed_male(value)
      if not $game_variables[7].is_a?(Array)
        $game_variables[7] = []
      end
      if not value.is_a?(Pokemon) and value != nil
        return $game_variables[7][0] = nil
      end
      $game_variables[7][0] = value
      $game_variables[7][2] = set_affinity
    end
    
    def self.set_breed_female(value)
      if not $game_variables[7].is_a?(Array)
        $game_variables[7] = []
      end
      if not value.is_a?(Pokemon) and value != nil
        return $game_variables[7][1] = nil
      end
      $game_variables[7][1] = value
      $game_variables[7][2] = set_affinity
    end
    
    def self.set_breed_egg(value)
      if not $game_variables[7].is_a?(Array)
        $game_variables[7] = []
      end
      if not value.is_a?(Pokemon) and value != nil
        return $game_variables[7][3] = nil
      end
      $game_variables[7][3] = value
    end
    
    # ------------------------------------------------------
    # daycare_sequence
    #   ce qui se passe à chaque pas supplémentaire à la pension
    # ------------------------------------------------------
    def self.sequence
      # Reproduction
      if breed_affinity > 0 and breed_egg == nil
        if $game_variables[7][4] == nil
          $game_variables[7][4] = 0
        end
        $game_variables[7][4] += 1
        if $game_variables[7][4] == 1
          if rand(100) < breed_affinity
            if   breed_female.female? or breed_male.male?
              set_breed_egg(Pokemon.new.new_egg(breed_female, breed_male))
            elsif breed_male.female? or breed_female.male?
              set_breed_egg(Pokemon.new.new_egg(breed_male, breed_female))
            end
          end
          $game_variables[7][4] = 0
        end
      end
      # Augmentation d'exp
      if breed_male.is_a?(Pokemon)
        breed_male.exp += 1
        while breed_male.level_check
          breed_male.silent_level_up
        end
      end
      if breed_female.is_a?(Pokemon)
        breed_female.exp += 1
        while breed_female.level_check
          breed_female.silent_level_up
        end
      end
    end
    
    # ------------------------------------------------------
    # breed_affinity / set_affinity
    #   lecture / calcul de la compatibilité entre les pokémons
    # ------------------------------------------------------
    def self.breed_affinity
      if not $game_variables[7].is_a?(Array)
        $game_variables[7] = []
      end
      if $game_variables[7][2] == nil
        return -1
      end
      return $game_variables[7][2]
    end
    
    
    def self.set_affinity
      if not(breed_male.is_a?(Pokemon) and breed_female.is_a?(Pokemon))
        return -1
      end
      # Même genre => incompatible
      if (breed_male.male? and breed_female.male?) or
          (breed_male.female? and breed_female.female?) or
          (breed_male.genderless? and breed_female.genderless?)
        return 0
      end
      # Groupe incompatible => incompatible
      if (breed_male.breed_group.include?(15) or
          breed_female.breed_group.include?(15))
        return 0
      end
      # Groupe différent (sauf si l'un est compatible avec tous) => incompatible
      if (breed_male.breed_group & breed_female.breed_group) == [] and
          not (breed_male.breed_group.include?(13) or breed_female.breed_group.include?(13))
        return 0
      end
      
      if breed_male.id == breed_female.id
        if breed_male.trainer_id == breed_female.trainer_id
          return 50 # Meme espèce, meme dresseur
        else
          return 70 # Meme espece, dresseur différent
        end
      else
        if breed_male.trainer_id == breed_female.trainer_id
          return 20 # espèce différente, meme dresseur
        else
          return 50 # espece différente, dresseur différent
        end
      end
    end
    
  end

end

Posté par spirow le 7 Oct - 13:45 (2010)
Merci Branden pour ta réponse et merci sUiCuNe31 de m'avoir donné le scipt qui marche ^^

Posté par Suicune31 le 7 Oct - 14:19 (2010)
[OK] dans le titre si le problème est réglé Clin d'œil foireux.