PSDK: Intégrer une forme pour un pokemon (dialga primal)

9 Réponses • 104 Vues

Bonjour à tous , j'aurai besoin d'un conseil pour pouvoir changer de forme à un pokemon en tenant un objet (selon le model de giratina) le pokemon en question est dialga que je voudrai changer un dialga primal quand il tient l'orbe adamant, je possède déjà les sprite numéroter en 483_1 (483 étant le numero de dialga dans le pokedex)

j'ai essayer de créer la forme a partir de ruby et d'un scripte fourni pour les forme des pokemon tel que giratina; arceus ,demeterosse etc... mais a chaque fois un message d'erreur apparais pour dialga

voila l'erreur
Message :
undefined method `[]' for nil:NilClass

Type : NoMethodError
Script : PFM::Pokemon : forms (RMXP)
Ligne : 122
Date : 12/11/2020 18:06:27
Game Version : 256
Logiciel : Pokémon SDK 24.87

merci de votre aide

« Modifié: 12 novembre 2020, 18:08:35 par Alphapheonix »

Script Demande d'aide PSDK

Enfaite le probleme viens du scripte et non de dialga primal car la même erreur se reproduit avec giratina

Est ce que quelqu'un aurait un scripte? je vous remercie d'avance

Rey

Modérateur

Faudrait que tu nous montres le script en question par contre, là on peut juste pas t'aider. De même, ton sujet n'est pas au bon endroit, je l'ai déplacé.
Merci j envoie le script en question tout de suite
module PFM
  class Pokemon
    # Change the form of the Pokemon
    # @note If the form doesn't exist, the form is not changed
    # @param v [Integer] the new form index
    def form=(v)
      v = v.to_i
      if($game_data_pokemon[@id][v])
        @form=v
        form_calibrate
      end
    end
    # Check if the Pokemon can mega evolve
    # @return [Integer, false] form index if the Pokemon can mega evolve, false otherwise
    def can_mega_evolve?
      data = $game_data_pokemon[@id]
      item_id = @item_holding
      if(data.size > 30)
        30.step(data.size - 1) do |i|
          d = data[i]
          next unless d.special_evolution
          d.special_evolution.each do |j|
            next if j[:form] and j[:form] != @form
            return i if item_id == j[:gemme]
            return i if j[:mega_skill] and self.skill_learnt?(j[:mega_skill])
          end
        end
      end
      return false
    end
    # Mega evolve the Pokemon (if possible)
    def mega_evolve
      mega_evolution = can_mega_evolve?
      return unless mega_evolution
      @mega_evolved = [@form, @ability]
      @form = mega_evolution
      @ability_current = @ability = $game_data_pokemon[@id][@form].abilities[rand(3)]
    end
    # Reset the Pokemon to its normal form after mega evolution
    def unmega_evolve
      if @mega_evolved
        @form, @ability = @mega_evolved
        @ability_current = @ability
        @mega_evolved = false
      end
    end
    # Is the Pokemon mega evolved ?
    def mega_evolved?
      return @mega_evolved != false
    end
    # Automatically generate the form index of the Pokemon
    # @param id [Integer] ID of the Pokemon in the database
    # @param form [Integer] if form != 0 does not generate the form (protection)
    # @return [Integer] the form index
    def _form_generation(id, form)
      return form if form != -1
      @character = nil
      sym = db_symbol
      if(sym == :unown) #Zarbi
        return @code % 28
      elsif(sym == :castform) #Morphéo
        env = $env
        if(env.building? or env.normal?)
          return 0
        elsif(env.sunny?)
          return 2
        elsif(env.rain?)
          return 3
        elsif(env.hail?)
          return 6
        end
      elsif(sym == :burmy || sym == :wormadam)
        env = $env
        if(env.building?)
          return 2
        elsif(env.grass? or env.tall_grass? or env.very_tall_grass?)
          return 0
        else
          return 1
        end
      elsif(sym == :cherrim)
        return 1 if $env.sunny?
      elsif(sym == :deerling)
        time = Time.new
        case time.month
        when 1,2
          return 3
        when 3
          return time.day < 21 ? 3 : 0
        when 6
          return time.day < 21 ? 0 : 1
        when 7,8
          return 1
        when 9
          return time.day < 21 ? 1 : 2
        when 10,11
          return 2
        when 12
          return time.day < 21 ? 2 : 3
        end
      elsif(sym == :meowstic)
        return 1 if @gender == 2
      end
      return 0
    end
    # List of items (in the form index order) that change the form of Arceus
    ArceusItem = %i[__undef__ flame_plate splash_plate zap_plate meadow_plate
                    icicle_plate fist_plate toxic_plate earth_plate sky_plate
                    mind_plate insect_plate stone_plate spooky_plate draco_plate
                    iron_plate dread_plate pixie_plate]
    # List of items (in the form index order) that change the form of Genesect
    GenesectModules = %i[__undef__ burn_drive chill_drive douse_drive shock_drive]
    # List of item (in the form index oreder) that change the form of Silvally
    SilvallyROM = %i[__undef__ fighting_memory flying_memory poison_memory
                    ground_memory rock_memory bug_memory ghost_memory steel_memory
                    __undef__ fire_memory water_memory grass_memory electric_memory
                    psychic_memory ice_memory dragon_memory dark_memory fairy_memory]
    # Automatically calibrate the form of the Pokemon
    # @return [Boolean] if the Pokemon's form has changed
    def form_calibrate
      @character = nil
      data = $game_data_pokemon[@id]
      last_form = @form
      sym = db_symbol
      case sym
      when :giratina #> Giratina
        @form = item_db_symbol == :griseous_orb ? 1 : 0
      when :mewtwo #> Mewtwo
        @form = item_db_symbol == :power_orb ? 1 : 0
      when :hoopa #> Hoopa
        @form = item_db_symbol == :prison_bottle ? 1 : 0
      when :tornadus #> Boreas
        @form = item_db_symbol == :reveal_glass ? 1 : 0
      when :thundurus #> Fulguris
        @form = item_db_symbol == :reveal_glass ? 1 : 0
      when :landorus #> Déméteros
        @form = item_db_symbol == :reveal_glass ? 1 : 0
      when :arceus #> Arceus
        @form = ArceusItem.index(item_db_symbol).to_i
      when :shaymin #> Shaymin
        @form = (item_db_symbol == :gracidea) && !($env.night? || $env.sunset?) ? 1 : 0
      when :genesect #> Genesect
        @form = GenesectModules.index(item_db_symbol).to_i
      when :silvally #> Silvallié
        @form = SilvallyROM.index(item_db_symbol).to_i
      when :dialga #> Dialga
        @form = item_db_symbol == :adamant_orb ? 1 : 0
      end
      #>Correction de la forme en cas d'erreur de BDD
      @form = 0 unless data[@form]
      #>Récupération du talent propre à la forme
      @current_ability = @ability = data[@form].abilities[data[last_form].abilities.index(@ability).to_i]
      return last_form != @form
    end
  end
end

voila le scripte en question

« Modifié: 12 novembre 2020, 20:41:45 par Rey »

Nuri Yuri

HostMaster

Mais attend, ce script est vieux, il est plus valide...
T'as trouvé ça où ?
ln(yo) = <3
J'ai trouver se script sur pokemon workshop, un membre l'avait poster,je l'ai trouver en cherchant comment changer de forme à un pokemon
Ducoup est ce que quelqu'un pourrait m'aider a integret dialga primal dans le jeu?
Ben, supprime le script que tu as rajouté et regarde comment c'est fait à l'heure actuelle pour Giratina (en cherchant  griseous_orb tu devrais trouver facilement) et copie/colle la méthode pour ton Dialga et ça devrait fonctionner sans souci :)
Avec ruby ou dans les config?

There was an error while thanking
Thanking...