Sujet n°1371
Posté par Sphinx le 28 Juil - 10:39 (2008)
Titre : [Tuto] Créer un nouveau type
Voici comment faire pour créer un 18° type :

 


Sur ce screen, vous reconnaissez l'onglet Système de la base de données de RMXP. La partie qui nous intéresse est encadrée de bleu. Rajouter le / les types dans les attributs (sélectionnez une ligne vide (zone encadrée rouge) et modifiez / ajoutez le nom dans la zone de texte en dessous (encadrée vert)) afin de le(s) rendre disponible(s) pour les pokémons et les attaques.


Maintenant ca se complique pour les non-scripteurs, car nous attaquons la partie scriptée de la création d'un type.


Nous allons commencer par modifier le script Pokemon_Skill. Rappelez-vous tout de même qu'une copie de ce script se trouve au dessus du script Scene_Debug pour permettre à la modification du menu debug de Drakhaine de fonctionner. Il faut donc appliquer les modifications dans les 2 scripts.

Ajoutez ceci :
Code:

    def type_test? # vous pouvez remplacer test par n'importe quel mot, c'est ce qui désignera le type dans les scripts
      return type == 18 # si vous ajoutez plusieurs types, remplacez 18 par le numéro de l'attribut
    end


A la fin du script, avant :
Code:

  end  
end


Ensuite, toujours dans Pokemon_Skill, ajoutez votre type là dedans (lignes 651 / 652 normalement) :
Code:

      p = [1, 7, 8, 9, 10, 12, 13, 14, 16] # ajoutez ", 18" (où 18 est le n° du type) si les attaques de votre type seront physiques (comme le type combat / acier / ...)
      s = [0, 2, 3, 4, 5, 6, 11, 15, 17] # ajoutez ", 18" (où 18 est le n° du type) si les attaques de votre type seront spéciales (comme le type eau / feu / ...)



Après cette modification, nous allons changer de script. Nous allons continuer avec le script Pokemon_Data.

Après :
Code:

  $data_table_type[ 17 ]=[ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 1 , 1 , 1 , 0 , 2 , 1 , 0.5 , 1 , 1 , 0.5 ]


Ajoutez :
Code:

  $data_table_type[ 18 ]=[ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]


Si vous êtes observateurs, vous aurez noté que les lignes $data_table_type[n] (jusqu'au type 17) contiennent 17 valeurs séparées par des virgules, alors que la ligne que j'ajoute en contiennent 18... Nous allons y remédier. Avant tout, sachez que ces valeurs sont des multiplicateurs. Les dégâts sont multipliés par cette valeur.

Ainsi, la valeur 0 correspond à une immunité (dégâts nuls). 0.5 correspond à une résistance (dégâts multipliés par 0.5, donc divisés par 2). 1 correspond à une neutralité (les dégâts sont multipliés par 1, aucune modification). 2 correspond à une faiblesse (dégâts multipliés par 2). Ainsi, si vous mettez 100, les dégâts seront multipliés par 100.

Mais il faut lire tout ca en tableau. Les lignes (qui désignent le(s) type(s) du pokémon défenseur) sont rapides à lire, mais les colonnes (multiplicateurs qui influent sur les dégâts selon le type de l'attaque) se lisent ainsi :

$data_table_type[ n ]=[ Normal , Feu , Eau , Electrique , Plante , Glace , Combat , Poison , Sol , Vol , Psy , Insecte , Roche , Spectre , Dragon , Acier , Ténèbres ]

Il faut ensuite ajouter sur toutes les autres lignes le multiplicateur du nouveau type selon le même modèle.

Après ca, sur le même script, ligne 919, remplacez :
Code:

for t in 1..17


par :
Code:

for t in 1..n


où n est égal au nouveau nombre de types (18 si vous n'en ajoutez qu'un seul)


Dans le script Pokemon, ajoutez ceci :
Code:

    def type_test? # remplacez test par le mot qui désigne votre type (voir en haut de ce tuto)
      if [@type1, @type2].include?(18)
        return true
      end
      return false
    end


A la fin du script, avant :
Code:

  end
end


Pour terminer, dans le script Pokemon_Battle_Core_1, lignes 1950 à 1988, vous avez ceci :
Code:

      case type
      when 0
        return "???"
      when 1
        return "NORMAL"
      when 2
        return "FEU"
      when 3
        return "EAU"
      when 4
        return "ELECTRIK"
      when 5
        return "PLANTE"
      when 6
        return "GLACE"
      when 7
        return "COMBAT"
      when 8
        return "POISON"
      when 9
        return "SOL"
      when 10
        return "VOL"
      when 11
        return "PSY"
      when 12
        return "INSECTE"
      when 13
        return "ROCHE"
      when 14
        return "SPECTRE"
      when 15
        return "DRAGON"
      when 16
        return "ACIER"
      when 17
        return "TENEBRES"
      end
    end


Nous allons y rajouter le 18° type, donc insérez ceci :
Code:

      when 18
        return "TEST" # <= vous pouvez remplacer le mot TEST entre "" par n'importe quel mot (qui désigne votre type) sans oublier de le laisser entre ""


avant
Code:

      end
    end



et voilà... Vous n'avez plus qu'à mettre une image appelée T18.png dans votre dossier Pictures et votre nouveau type sera terminé !


PS : dans la partie scriptée & la partie attributs, vous pouvez nommer votre type "bidons" et insérer sur l'image T18.png le type TEST... Les noms présents dans la BDD & dans les scripts (tant que c'est le même qui est utilisé pour tous les scripts) n'ont aucun impact sur le type en lui même... C'est son image qui importe ^_^


Edit : Pour ajouter plus de 20 types, il faut déplacer les éléments qui servent pour les objets.
/!\ Attention : cela entraine obligatoirement une mise à jour de tous les objets du sac /!\ 


Il faut modifier le numéro des attributs concernant le sac. Ca se passe dans le script Item_Data, lignes 308 à 320.

Remplacez les nombres (29 à 34) par les nouveaux nombres des attributs que vous aurez assigné aux attributs du sac :
Code:

          when 29 # <= Dénombrable
            custom_list[0] = true
          when 30 # <= Consommable
            custom_list[1] = true
          when 31 # <= Usage sur map
            custom_list[2] = true
          when 32 # <= Usage en combat
            custom_list[3] = true
          when 33 # <= Usage sur pokémons
            custom_list[4] = true
          when 34 # <= Apte / Non apte
            custom_list[5] = true
          end


Ensuite on va effectuer une modification similaire quelques lignes en dessous, aux lignes 336 à 345.
Remplacez les nombres (23 à 27) par les nouveaux nombres des attributs que vous aurez assigné aux attributs du sac :
Code:

        when 23 # <= Objet
          $data_item[i].unshift("ITEM")
        when 24 # <= Ball
          $data_item[i].unshift("BALL")
        when 25 # <= CT / CS
          $data_item[i].unshift("TECH")
        when 26 # <= Baies
          $data_item[i].unshift("BERRY")
        when 27 # <= Clefs
          $data_item[i].unshift("KEY")


Ainsi, vous pourrez libérer autant d'espaces que vous le souhaiterez pour ajouter autant de types que vous le voudrez.

Posté par Newtiteuf le 28 Juil - 10:51 (2008)
super tuto/script, bravo !

Posté par Sphinx le 28 Juil - 11:02 (2008)
^_^ merci NT ^_^


(xP jdois avouer que j'ai ramé pour trouver tous les points à changer, mais quand je vois le final, je me dis que j'ai trop cherché inutilement, la solution ayant été uniquement dans 3 scripts (+ 1 copie) :lol:)

Posté par Empire1601 le 28 Juil - 12:03 (2008)
Dedieu t'as du mettre vachement de temps avant de trouver la solution  :shock:
Bravo en tout cas ! Petit saligaud mal élevé

Posté par Sphinx le 28 Juil - 15:02 (2008)
Maj : j'ai enfin trouvé comment faire pour ajouter plus de 20 types (>> déplacer les attributs du sac qui commencent à l'attribut n°21) mais cela nécessitera logiquement une maj de tous les objets de la BDD... ^_^ 20 types, c'est déjà pas mal, vous ne trouvez pas ?

Posté par Dark' le 28 Juil - 17:18 (2008)
MERCI !!!!!!!!!! J'avais justement besoin de nouveaux types, et de plus, il m'en fallait... 20 ! Sphonx, tu est génial !

Posté par Sphinx le 28 Juil - 17:27 (2008)
sphonx :shock:

:cry:

^_^ mais oui, je sais, je suis génial :lol:

Clin d'œil foireux merci Clin d'œil foireux

^_^ à tout hasard, je ne suis pas contre une ptite place dans vos crédits Lordork chez mémé (sisi, vous savez, à la fin, les ptites lignes que personne ne lit ! Petit saligaud mal élevé)

Posté par Dark' le 28 Juil - 17:53 (2008)
Pour ma part tu y est déjà ^^ (Aide, Système Jour/Nuit, Aide, Soutien mental, Aide...)

Posté par Sphinx le 28 Juil - 17:59 (2008)
Clin d'œil foireux certains (surtout les "ptits nouveaux" que je ne croise pas souvent mais que je salue quand même) n'ont jamais reçu mon aide (en tout cas, pas au point de me mettre dans leurs crédits Petit saligaud mal élevé) donc...



Petit saligaud mal élevé mais ravi d'avoir pu t'aider Petit saligaud mal élevé

Posté par Newtiteuf le 29 Juil - 10:23 (2008)
Sphinx, mes credits a moi on seras obligé de les lire !
J'ai plusieurs idées:
  -Apparitions dans le jeu (ca serais drole de voir un sphinx XP)
  -Crédits tres animés
  -Apparitions des crédits 3 fois avant la ligue
  -Crédits avant le début du jeu !
  -Crédits sur la page noir avec Pokemon Script Project marqué dessus !

Posté par Sphinx le 29 Juil - 10:35 (2008)
^_^ looool


Clin d'œil foireux je n'en doute pas (Petit saligaud mal élevé tordu comme t'es, tu serais bien capable de faire tomber ton sphinx du ciel :lol:)

^_^ sérieusement, jte remercie :lol:

Posté par Newtiteuf le 29 Juil - 10:38 (2008)
derien c'est normal tu m'as aidée non ?

Posté par Cam' le 29 Juil - 10:48 (2008)
Tu as reussi ! Tu as reussi à trouver le truc ou j'étais bloqué !
Félicitation Sphinx ^^

Tu seras dans mes crédits. Je crois que tu y es déjà pour euuuh... "Membre sympa qui me donne du courage sans s'en rendre compte" ^^

Posté par Sphinx le 29 Juil - 11:17 (2008)
Clin d'œil foireux beaucoup m'ont également grandement aidés Clin d'œil foireux


(^_^ un juste retour des choses, quoi... ^_^)


:lol: merci cam :lol:

Posté par Slash le 29 Juil - 15:20 (2008)
un grand bravo sur ce coup la sphinx, c'est de l'exxcelent boulot
ca en facilitera plus d'un (moi le 1er)
et ce tuto est tres bien expliquer bravo

Posté par Sphinx le 29 Juil - 15:32 (2008)
^_^" je me suis aperçu à l'instant d'une modif supplémentaire dans le script P_B_C_1 ^_^"


oubli réparé, je viens d'éditer mon tuto Clin d'œil foireux


(merci slash =))

Posté par Jordan le 30 Juil - 14:05 (2008)
je sent que ça sera pratique!

Posté par Krosk le 30 Juil - 17:03 (2008)
et un secret de psp de plus qui est dévoilé.

Pour la limitation a 20 types, c t intentionnel, je me suis dit qu'il n'y avait pas besoin d'en faire plus. J'ai peut etre eu tort...

Posté par Sphinx le 30 Juil - 17:17 (2008)
^_^ tu sais, celui qui en aura besoin de plus, ben... il sait comment faire de la place en plus ^_^


Clin d'œil foireux mais je te l'accorde, 20 types, ca peut suffire Clin d'œil foireux

Posté par Dark' le 31 Juil - 15:49 (2008)
Krosk a écrit:
Pour la limitation a 20 types, c t intentionnel, je me suis dit qu'il n'y avait pas besoin d'en faire plus. J'ai peut etre eu tort...





Eh ! Tu m'avais dit que tu avais configuré une limitation a 17, pas a 20, quand je t'ai demandé ! Vilain !

Nan, je déc'

Encore merci a Sphinx d'voir dévoiler ce que Krosk nous avait caché !

Posté par Krosk le 31 Juil - 16:02 (2008)
Oui, je t'ai dit que j'ai configuré une limitation a 17, ce qui est vrai puisqu'il y a 17 types présents et pas possible d'en ajouter un de plus sans modification lourde. J'ai jamais dit que c'était impossible de rajouter des types en plus, j'ai meme dit le contraire mais qu'il fallait travailler sur les scripts.

Au dela de 20, ca demande beaucoup trop de changement par contre.

Posté par Dark' le 1 Aoû - 13:04 (2008)
Ah, ok !

Le prend pas mal, surtout !
J'ai pas critiqué, j'avais juste envie de dire quelque chose...
Et j'ai encore parler pour rien... quel âne...

Posté par Newtiteuf le 2 Aoû - 10:58 (2008)
Je trouve la limitation tres bien, mais je pense qu'il faudra repensé a la limitation si un nouvel opus de pokemon sortait !