Sujet n°4082
Posté par Empire1601 le 6 Juin - 19:43 (2009)
Titre : Les différentes formes de Motisma
Bonjour/Bonsoir  Imbécile heureux
Pour mener à bien le projet de PSP5G+, j'ai besoin de maitriser l'utilisation des différentes formes.
En effet, le projet possède déjà plusieurs nouvelles formes de Motisma et aura sans doute d'autres nouvelles créations Clin d'œil foireux
J'ai donc essayé de changer le type d'un Motisma en fonction de sa forme en intercalant ce petit bout de code à la ligne 132 Bouche extensiblek:
Spoiler
 
Code:

 if id == 479
        @type1 = 4
        if @form == 1
          @type2 = 6
        end
        case @form
          when 1 
            @type2 = 2
          return true
          when 2
            @type2 = 3
          return true
          when 3
            @type2 = 6
          return true
          when 4
            @type2 = 10
          return true
          when 5 
            @type2 = 6
          return true
          when 6
            @type2 = 11
          return true
          when 7
            @type2 = 1
          return true
        end
      end



Mais voilà ! Le script ne donne pas le résultat escompté :?
Après de nombreux test, j'ai pu localiser le problème : ce n'est pas le code qui ne va pas mais la variable @form (même chose pour form)
En effet, avec un print on peut facilement constater que sa valeur est nil Bouche extensible
J'ai essayé de changer de place dans le script ce code mais sans succès Mollasse enragé
Quelqu'un pourrait-il m'aider à faire quelque chose qui marche ? :mrgreen:
Merci :D

PS : Ceci sera sans doute la première partie de ma question car je vais bientôt m'attaquer au changement des attaques ^_^"

Posté par Sphinx le 6 Juin - 20:12 (2009)
En définissant les paramètres de ton pokémon (que tu donnes au joueur (ajouter_pokemon_param (0.7 / 4G+)) que tu définisses comme combat contre un poké sauvage lancé depuis un évent (demarrer_combat_param (qui sera intégré dans la dernière version de 4G+, à savoir 5G+)) que tu définisses comme pokémon sauvage rencontré aléatoirement (BDD (4G+)) ou en tant que pokémon d'un dresseur que tu affrontes (BDD (0.7 / 4G+))) tu peux définir sa forme (avec le caractère "FORM" => no_form)

>> lorsque tu définis la forme de cette facon, la variable @form enregistre le numéro de la forme, et donc ton code devient théoriquement utilisable =)

Cependant, et là c'est un point auquel je n'avais pas réfléchi quand j'ai codé ca dans 4G+, mea maxima culpa, le changement des valeurs de @type1 et de @type2 n'a plus d'effets en combat, alors que sous PSP0.7, il en avait...

Eh bien j'ai réfléchi à la solution cette après midi et je suis en mesure de proposer une solution (le temps de la rédiger au bon endroit, ca devrait être dispo soit ce soir soit cette nuit, donc pour demain pour les couche-tôt) afin de mettre à jour la table des types (qui, par ailleurs, permet d'intervenir sur les faiblesses / résistances de TOUS les pokémons, sans toucher à leur programmation dans la BDD, ce que j'ai considéré, jusqu'à tout à l'heure, comme d'un intérêt indéniable, dénué de défauts (non, je ne prends pas les chevilles ^o^' au pire, elles ont dégonflées tout à l'heure quand je me suis rendu compte de ca... ^o^')) qui, dans 4G+, remplace les types qui servent de base de calcul des dégâts dans 0.7.

Afin de mettre à jour la table des types lorsqu'on change le type d'un pokémon, j'ai donc créé 3 nouvelles méthodes de la classe pokémon, faciles d'installation et d'utilisation, que je vais poster soit dans le topic de 4G+ soit ailleurs, mais un endroit que je mettrai en lien dans la plupart des topics que j'ai pu trouver recensant ce petit défaut de fabrication ^o^'

>> Pour ce qui est des attaques, je vais te développer ca, et te dire où le mettre =)

Posté par Pαlвσlѕку le 6 Juin - 20:51 (2009)
Heureusement que j'étais là pour le bug. Clin d'œil foireux

Posté par Empire1601 le 6 Juin - 21:28 (2009)
Non Sphinx c'est différent  :^^:
Avec ce script, le type est changé durant la création d'un pokémon (de la classe pokémon) et donc avant tout combat Clin d'œil foireux (j'ai testé la modification prend bien en combat)
Cependant, la variable form contient la valeur nil alors qu'elle devrait avoir le numéro de la forme du pokémon :S
C'est pour ça que mes if ne marchent pas Clin d'œil foireux

Posté par Sphinx le 7 Juin - 00:08 (2009)
./3647.html#p88475 <= résolution du "bug" du changement de types (bonne lecture ^o^)


Empire, essaie ceci :

Script Pokemon_Custom :
remplace :
Code:
    def type2
      if name == "CHENITI" or (name == "CHENISELLE" and type2 == 0)
        type_2 = 0
        for j in 0...POKEMON_S::MILIEU_CHENITI.size
          if POKEMON_S::MILIEU_CHENITI[j][2].include?($game_map.map_id)
            type_2 = POKEMON_S::MILIEU_CHENITI[j][1]
          end
        end
        return type_2 if type_2 != 0
      end
      return @type2
    end


par :
Code:
    def type2
      if name == "CHENITI" or (name == "CHENISELLE" and type2 == 0)
        type_2 = 0
        for j in 0...POKEMON_S::MILIEU_CHENITI.size
          if POKEMON_S::MILIEU_CHENITI[j][2].include?($game_map.map_id)
            type_2 = POKEMON_S::MILIEU_CHENITI[j][1]
          end
        end
        return type_2 if type_2 != 0
      elsif name == "MOTISMA"
        case @form
        when 0
          set_tables(nil, 0)
          return 0
        when 1
          set_tables(nil, 2)
          return 2
        when 2
          set_tables(nil, 3)
          return 3
        when 3
          set_tables(nil, 6)
          return 6
        when 4
          set_tables(nil, 10)
          return 10
        when 5
          set_tables(nil, 6)
          return 6
        when 6
          set_tables(nil, 11)
          return 11
        when 7
          set_tables(nil, 1)
          return 1
        end
      end
      return @type2
    end


>> ca devrait, théoriquement, fonctionner =)

edit : modification du code pour que le nouveau type soit correctement pris en compte en combat, mais ca nécessite l'installation de la fonction set_types (voir point II du lien au début de ce post)

Posté par Empire1601 le 7 Juin - 08:48 (2009)
Ok merci ça marche
Je laisse le sujet ouvert pour les attaques ^_^
[edit] il va falloir que je change les stats aussi

Sphinx as tu réussi à faire en sorte qu'un event (comme dans platine) permette de changer la forme de motisma ? (sans le bug des combats)

Posté par Sphinx le 7 Juin - 10:17 (2009)
en faisant MOTISMA.set_types(type1, type2) tu modifies proprement ses types (plus de détail sur le lien donné dans la nuit Clin d'œil foireux)


Ensuite tu n'as plus qu'à modifier MOTISMA.form en parallèle, et le tour sera joué ! =) Pour les stats, reprends le même genre de trucs, tu as tout le nécessaire dans Pokemon_Custom ^o^