Sujet n°1511
Posté par Sphinx le 19 Aoû - 15:52 (2008)
Titre : Sauvegarder les données d'un pokémon
Utilise :
Events
Graphismes
Mapping
Scénario
Scripts


Niveaux :
1 : aucune connaissances nécessaires (sauf lire et comprendre le français lu)
2 : quelques bases nécessaires pour pouvoir adapter sans mal le système proposé
3 : connaissances minimum nécessaires
4 : bonnes bases indispensables
5 : connaissances poussées requises


Niveau nécessaire en évents :
2 : être capable d'insérer quelques commandes de scripts dans un évent et d'en respecter l'ordre. maitriser quelques commandes scriptées de PSP.
- uniquement pour l'éleveur pokémon - 3 : maitriser les commandes des évents, être capable de reproduire un schéma donné

Niveau nécessaire en scripts :
1 : être capable d'effectuer une légère modification dans un script.

Ces niveaux sont à titre indicatifs, à la seule estimation de l'auteur. Lisez ce tutoriel pour vous faire une idée plus précise et n'hésitez pas à demander de l'aide si nécessaire.


Sommaire

Note de l'auteur
Sauvegarder les données d'un pokémon et le retirer de l'équipe
Ajouter un nouveau pokémon entre temps
Restituer les données sauvegardées
Petit plus : déterminer l'index d'un pokémon et l'utiliser
Gros plus : Application pour créer un éleveur pokémon
Vous êtes perdus


Note de l'auteur 

Tout d'abord, sachez que j'utiliserai quelques termes spécifiques à ce tutoriel, donc notez les dans un coin de votre tête, ils serviront tous pour plus tard.


Après le tutoriel d'Amélia sur comment sauvegarder les données de plusieurs dresseurs dans un même jeu pour les réutiliser ultérieurement, je vais vous expliquer comment procéder pour en faire de même, mais avec les pokémons d'un dresseur.

Bien sur, vous allez me dire "oui mais on retire le pokémon avec la commande $pokemon_party.remove_id(@index) puis ensuite remettre un pokémon identique via l'option "ajouter_pokemon(@id, @niveau) !" et là moi je répondrai "avec cette méthode, si vous avez nommé un pokémon, vous perdez ce surnom, si vous avez donné des objets à votre pokémon comme des boosters (fer, calcium, zinc, ...) ou encore des CT (je ne parle pas des CS utilisables à l'infini) vous perdrez également tout ca ! Sans parler du caractère Shiny du pokémon si vous avez eu la chance d'en rencontrer un sauvage ! Ni de la nature du pokémon sur laquelle vous avez pu baser une partie de votre stratégie !".

Cette méthode que je vous propose aujourd'hui a en effet l'avantage de ne pas vous faire perdre les données de votre pokémon ! Mais passons sans plus tarder à la suite de ce tutoriel.
Revenir en haut 



Sauvegarder les données d'un pokémon et le retirer de l'équipe 

Nécessite : une variable par pokémon sauvegardé.

Pour sauvegarder les informations d'un pokémon, tout ce que vous avez à faire, c'est insérer ce code dans un évent via la commande "Insérer un script" :
Code:

$game_variables[N] = $pokemon_party.actors[@index]


Une fois ces informations sauvegardées, vous pouvez retirer le pokémon en question via cette commande :
Code:

$pokemon_party.remove_id(@index)


Conseil de l'auteur : Bien sur, pour des raisons plus qu'évidentes, je vous conseille vivement de sauvegarder les informations du pokémon juste avant de le retirer ! Si vous sauvegardez ces informations trop tôt, le joueur aura pu apprendre une / des CT au pokémon ou encore booster ses stats ! En revanche, si vous oubliez ou si vous les sauvegardez trop tard, ces informations seront tout bonnement perdues, et donc le pokémon aussi !
Revenir en haut 



Ajouter un nouveau pokémon entre temps 

Ah, je vous vois venir à la lecture de ce titre ! "Hein ? La méthode pour ajouter un pokémon change d'avant ?" Désolé de vous décevoir mais non. "Alors pourquoi perdre du temps avec ca ?" Ah mais lisez, vous allez comprendre !

Imaginez un instant que je joue à un de vos jeux et qu'à l'étape précédente, j'avais un BULBIZARRE shiny niveau 50 en première position de mon équipe. Le maker, ayant bêtement suivi ce tuto jusque là m'aura piqué mon pokémon via cette commande :
Code:

$game_variables[N] = $pokemon_party.actors[0]
$pokemon_party.remove_id(0)

Vous l'aurez compris, ces deux commandes servent à sauvegarder les infos de mon BULBIZARRE dans la variable N puis à me supprimer mon si joli pokémon.

Après ca, on me fait don d'un SALAMECHE. Puisqu'il n'y avait plus aucun autre pokémon, SALAMECHE prendra la place 0 ! Pour le moment, peu importe, puisque la commande d'ajout d'un pokémon ne change absolument pas. En effet, le maker aura juste à utiliser, comme il l'aurait fait normalement, la commande
Code:

ajouter_pokemon("SALAMECHE", 50)


Et ce point se termine là dessus. J'ai donc dans mon équipe un SALAMECHE, et dans la variable N, un BULBIZARRE.
Revenir en haut 



Restituer les données sauvegardées 

La commande pour restituer les données d'un pokémon sauvegardé est l'inverse de la commande de sauvegarde. La voici :
Code:

$pokemon_party.actors[@index] = $game_variables[N]

L'inverse, je l'ai dit !

Reprenons mon exemple. Rappel, j'ai un BULBIZARRE enregistré dans la variable N et un SALAMECHE que j'ai eu entre temps (en fait, ce dernier point n'importe que peu, le principal c'est que j'ai un autre pokémon à la place qu'occupait BULBIZARRE précédemment.)
Si j'utilise l'inverse de la commande qui a servi à la sauvegarde de BULBIZARRE, j'insèrerai ceci dans mon évent :
Code:

$pokemon_party.actors[0] = $game_variables[N]

Problème, j'ai un SALAMECHE à cet endroit, donc je vais l'écraser si j'utilise cette commande !. "Facile, je teste le nombre de pokémons que j'ai dans l'équipe, et puis je place BULBIZARRE dès que j'ai un emplacement de vide !" Euh vous vous sentez l'âme de faire 6 conditions pour replacer BULBIZARRE sans faire bugger votre jeu, vous ? Pas moi.

"Si tu nous dis ca, c'est que t'as un solution, pas vrai ?" Eh oui. Une condition pour tester s'il y a de la place dans l'équipe (donc si l'équipe contient moins de 6 pokémons) restera utile, mais une condition, pas 6.
Pour la condition, utilisez la partie script de la commande Condition et insérez simplement ceci :
Code:

$pokemon_party.size < 6

Oui, $pokemon_party.size renvoie la taille de l'équipe.

"Bon, c'est joli tout ca, mais mon BULBIZARRE, je le récupère quand, moi ?" Ben maintenant en fait... Je rappelle un point important, $pokemon_party.size renvoie la taille de l'équipe actuelle ! Je rappelle également que @index correspond à la position d'un pokémon - 1 ! Vous comprenez où je veux en venir ? "Non !" Logique, sinon vous auriez arrêté de lire, et ca n'aurait pas été la peine que j'utilise ma plus belle plume pour finir de rédiger ce pavé. Là où je veux en venir, c'est que $pokemon_party.size correspond à @index du dernier pokémon + 1 ! Donc à @index d'un éventuel nouveau pokémon ! Voilà comment je vais me passer en moins d'une demi ligne de script de 5 conditions ! Voici le code que je vais utiliser :
Code:

$pokemon_party.actors[$pokemon_party.size] = $game_variables[N]


C'est beau hein ? Non ? Ah bon... Enfin en tout cas, c'est rapide et facile ! Maintenant, que j'explique un peu comment cet esprit complico-antisimpli-surchauffe-sphinxtesque en est arrivé à cette brillante conclusion.

Reprenons l'égalité de base :
Citation:

@index du dernier pokémon de l'équipe = $pokemon_party.size - 1

Egalité que je convertis tout de suite ainsi :
Citation:

@index du dernier pokémon de l'équipe + 1 = $pokemon_party.size

C'est justement ce qu'il nous fallait pour placer BULBIZARRE en dernière position, un peu comme la commande "ajouter_pokemon" l'aurait faite, c'est à dire sans écraser un autre pokémon en réintégrant BULBIZARRE à mon équipe. En effet, la place qu'occupe BULBIZARRE correspondra toujours à la place qu'occupe le dernier pokémon + 1 !
Revenir en haut 



Petit plus : déterminer l'index d'un pokémon et l'utiliser 

"Et si je ne sais pas, moi, à quel emplacement se trouve le pokémon précis que je veux retirer, je fais 6 conditions aussi ?" Non plus, car je viens de trouver la méthode à utiliser ! Ce point ne s'applique à votre cas que si vous souhaitez retirer un pokémon précis en le désignant soit par son ID soit par son nom.

Tout d'abord, voici le code entier pour sauvegarder les données et retirer un pokémon précis sans connaitre sa position dans l'équipe et sans utiliser des tonnes de conditions !
Code:

$game_variables[N] = $pokemon_party.actors[pokemon_index(X)]
$pokemon_party.remove_id(pokemon_index(X))


A vrai dire, une condition est tout de même indispensable. Il faut vérifier que le pokémon recherché est bien présent dans l'équipe, sans quoi pokemon_index(X) renverra -1, et $pokemon_party.actors[pokemon_index(X)] désignera le dernier pokémon de l'équipe quel qu'il soit.
Utilisez la partie script de la commande Condition et insérez simplement ceci :
Code:

pokemon_possede(X)

qui renverra true (vrai) si le pokémon est possédé et false (faux) s'il ne l'est pas.

Ensuite, il faut savoir que
Code:

pokemon_index(X)
renvoie la position dans l'équipe du pokémon recherché (-1 s'il n'est pas présent dans l'équipe).

Petit arrêt sur image pour diffuser un flash spécial : Si vous êtes un être humain normal, que vous ne connaissez pas les 493 pokémons et leurs ID par coeur, voici le moyen de vous épargner la recherche fastidieuse de l'ID d'un pokémon dont vous connaissez le nom. Dans le script Interpreter, recherchez ceci :
Code:

  def get_pokemon(id_data)
    return $pokemon_party.get_pokemon(id_data)
  end
  alias pokemon_index get_pokemon

et remplacez ce bout de code par :
Code:

  def get_pokemon(id_data)
    if id_data.type == String
      id_data = id_conversion(id_data)
    end
    return $pokemon_party.get_pokemon(id_data)
  end
  alias pokemon_index get_pokemon


Oui, je n'ai fait qu'ajouter ces trois lignes :
Code:

    if id_data.type == String
      id_data = id_conversion(id_data)
    end

mais ce sont elles qui vont vous permettre de remplacer l'ID du pokémon par son nom (impérativement entre "" puisqu'il s'agit de texte !) dans la fonction
Code:

pokemon_index(X)
(donc vous pourrez désormais mettre soit X soit "Y" dans les ().)

Reprenons. Maintenant, on peut mettre le nom du pokémon entre "" à la place de son ID. Et bien on ne va pas se gêner ! Depuis le début, je considère que BULBIZARRE est mon premier pokémon (@index = 0) mais en fait, qu'est-ce que j'en sais, moi, maker, si mon joueur a bien laissé son pokémon en première position dans son équipe ? Et ben non, on ne le sait pas ! Enfin on va le savoir dans pas longtemps... Grace à cette fonction :
Code:

pokemon_index("BULBIZARRE")
je saurais à quelle position est BULBIZARRE, et donc ensuite, je pourrai sauvegarder ses données et lui voler sauvagement son pauvre petit pokémon.

Rappelez vous maintenant quelle fonction je dois utiliser pour sauvegarder les données de mon pokémon et ensuite le retirer du jeu :
Code:

$game_variables[N] = $pokemon_party.actors[@index]
$pokemon_party.remove_id(@index)


Maintenant, je connais N grace à la fonction
Code:

pokemon_index("BULBIZARRE")
C'est bien ! Mais qu'est-ce que j'en fais après ? Je le sauvegarde dans une variable que j'utiliserai après à la place de @index ? Et si j'allais simplement plus vite ? En fait, moi, je m'en contrefiche de savoir si BULBIZARRE est en première, deuxième ou dernière position dans l'équipe ! Ca me sert juste pour le trouver et le sortir de là ! Alors pourquoi gaspiller une variable pour si peu, franchement ? J'ai juste à mettre
Code:

pokemon_index("BULBIZARRE")
à la place de @index, pour avoir la position exacte de BULBIZARRE et m'en servir instantanément ! Ce qui donne ce code ci :
Code:

$game_variables[N] = $pokemon_party.actors[pokemon_index("BULBIZARRE")]
$pokemon_party.remove_id(pokemon_index("BULBIZARRE"))


Notez simplement que vous pouvez tout de même vous passer de la modification de script, auquel cas il faudra passer par l'ID du pokémon et non son nom Autrement dit, pour BULBIZARRE, le code ne serait plus :
Code:

$game_variables[N] = $pokemon_party.actors[pokemon_index("BULBIZARRE")]
$pokemon_party.remove_id(pokemon_index("BULBIZARRE"))

mais simplement :
Code:

$game_variables[N] = $pokemon_party.actors[pokemon_index(1)]
$pokemon_party.remove_id(pokemon_index(1))

Revenir en haut 



Gros plus : Application pour créer un éleveur pokémon 

Nécessite : 5 variables et un interrupteur pour un pokémon gardé par l'éleveur.

Voici comment créer un éleveur pokémon qui fonctionne comme le système des jeux officiels, c'est à dire qu'à chaque fois qu'un joueur a fait un certain nombre de pas (qu'il vous appartiendra de définir) alors le pokémon gagnera un niveau, et vous devrez payer un nombre de $, plus ou moins élevé selon le nombre de niveaux gagnés, pour le récupérer.

Sans plus tarder, voici la structure d'un éleveur basique :
Page 1
[/hide]
Page 2
[/hide] 


Je vais maintenant décortiquer mon évent et vous l'expliquer.
NB : Les 2 pages de cet évent seront en déclenchement par la touche action & la seconde sera activée par le switch local A.
    Il s'agit, dans cette page, de confier le pokémon à l'éleveur. Aussi j'ai commencé par initialiser 2 valeurs à régler (oui, j'ai préféré introduire un petit panneau de configuration en début d'évent) que vous copierez / collerez au début de votre évent via la commande insertion de script. Vous pouvez encadrer ce panneau de configuration par une (ou plusieurs) condition(s) pour moduler les prix, par exemple en période de soldes chez les éleveurs...
    Code:

    $game_variables[896] = 2
    $game_variables[895] = 10

    NB : on peut également se servir de la commande "Gestion des variables" que propose RMXP, mais je trouve cette forme plus rapide / simple à modifier

    $game_variables[896] représente le nombre de pas qu'il faudra que le héros fasse pour que son pokémon gagne un niveau. Ici j'ai réglé la valeur sur 2, il est évident que vous pouvez indiquer une toute autre valeur, aussi bien 10 pas que des milliers ! La seule restriction, c'est qu'il faut un nombre entier ici. Vous avez déjà vu un héros faire un demi pas ?
    $game_variables[895] contient la valeur de base de ce que le héros devra payer à l'éleveur pour reprendre son pokémon. Comme dans les versions officielles, le joueur doit payer ($game_variables[895] + $game_variables[895] * nbre de niveaux gagnés) pour récupérer son pokémon. Ici, vous remarquerez que j'ai mis 10 comme valeur "par défaut", c'est juste pour indiquer que vous pouvez aussi bien mettre le $ symbolique qu'une somme astronomique. Seule contrainte, le nombre saisi ici doit être un entier (PSP ne gère pas les centimes)

    Une fois ces valeurs initialisé, nous pouvons commencer notre évent. Déjà, l'éleveur doit faire son spitch pour demander si le joueur veut lui confier un pokémon. Ensuite on utilise la condition draw_choice (cf le manuel pour ceux qui ne sauraient pas s'en servir) pour permettre au joueur de répondre à l'éleveur (qu'il indique s'il veut ou non confier un pokémon à ce charlatan l'éleveur). Si la condition n'est pas remplie (si le joueur a répondu non) l'éleveur dit simplement au revoir & puis fin. Si la condition est remplie, alors il faut commencer par sélectionner le pokémon dans l'équipe via l'insertion de la commande scriptée :
    Code:

    appel_menu_equipe

    Ensuite, on contrôle par une nouvelle condition que la variable numéro 4 ait une valeur différente de -1 (c'est la valeur que renvoie appel_menu_equipe si le joueur annule et donc sort du menu sans sélectionner de pokémons) et enfin on peut stocker le pokémon puis le retirer de l'équipe comme décrit un peu avant dans ce tuto, c'est à dire ainsi :
    Code:

    $game_variables[900] = $pokemon_party.actors[$game_variables[4]]
    $pokemon_party.remove_id($game_variables[4])

    J'en profite en passant pour initialiser une valeur qui nous servira plus tard, j'ai nommé $game_variables[897] !
    Code:

    $game_variables[897] = $pokemon_party.steps

    Ainsi, plus tard, je pourrai déterminer le nombre de pas que le héros aura fait avant de récupérer son petit pokémon chéri, et donc le nombre de niveaux qu'il faudra ajouter au pokémon.
    Si vous voulez que l'éleveur parle, n'hésitez pas, la commande "Afficher un message" n'est pas indisponible même si je n'en parle pas !
    Enfin je termine en activant l'interrupteur local A.

      Là, ca se complique... Non seulement il faut récupérer le pokémon, mais il faut aussi faire payer le pigeon le héros et enfin il faut ajouter le bon nombre de niveaux au pokémon !
      Bon, commencons par le début, on calcule le nombre de pas parcourus depuis le dépôt du pokémon, pour ensuite en calculer le niveau et déterminer le montant que va exiger l'éleveur pour ses bons et loyaux services. Insérez au début de la seconde page ceci via la commande Insérer un script :
      Code:

      $game_variables[899] = ($pokemon_party.steps - $game_variables[897]) / $game_variables[896]
      $game_variables[898] = $game_variables[895] * ($game_variables[899] + 1)

      $game_variables[899] contient désormais le nombre de niveaux gagnés calculés ainsi : nombre de pas parcourus (>> [(nbre de pas total au moment de la reprise du pokémon) - ($game_variables[897] qui contenait le nombre de pas au dépôt)) / (nombre de pas par niveaux)].
      En passant, la raison pour laquelle la valeur de $game_variables[896] doit être un entier est simplement que si RMXP fait une opération qui contient au moins une valeur décimale (2.0 est une décimale ! 2 est un entier !) le résultat est automatiquement donné avec les décimales, et là vous aurez à payer des millionièmes de $.
      $game_variables[898], c'est le prix que l'éléveur va exiger. Il est calculé ainsi : [$game_variables[895] * (nbre de niveaux gagnés + 1)], ce qui revient au même que de faire [$game_variables[895] + $game_variables[895] * (nbre de niveaux gagnés)]

      Maintenant, on sait combien va prendre l'éleveur. Il faut faire une succession de conditions pour voir si le joueur veut reprendre son pokémon (draw_choice), s'il a de la place dans son équipe ($pokemon_party.size < 6) et enfin s'il a assez pour payer l'éleveur ($pokemon_party.gold >= $game_variables[898]). Ces 3 commandes de conditions sont à insérer dans la partie scriptée des dites conditions, dans l'ordre que vous voulez.

      Si ces 3 conditions sont remplies, alors on augmente le niveau du pokémon, on le rend et on retire l'argent dû.
      Procédons dans cet ordre. 1) on augmente le niveau du pokémon. Souvenez-vous qu'il est stocké dans une variable, donc on ne peut pas utiliser la commande habituelle que PSP_mod a pour augmenter le niveau d'un pokémon. En outre, cette méthode n'est pas silencieuse, donc ca ne va pas non plus... Voici ce qu'il faut faire :
      Code:

      for lvl in 1..$game_variables[899]
        $game_variables[900].level_up
      end

      Oui, une boucle qui va servir à augmenter le niveau (et les stats par la même occasion !) du pokémon stocké, et var(899), c'est le nombre de niveaux gagnés. L'ennui, c'est qu'ici, l'augmentation de niveau n'est pas silencieuse (en outre, la pension serait trop avantageuse si elle permettait d'apprendre des attaques ! même si ca, c'est en option... je détaillerai plus loin) donc j'ai adapté un petit système pour y remédier. Notez l'activation (puis après la désactivation) d'un interrupteur (ici le n° 900) autour de la boucle for. J'ai encore été faire une petite manip vite fait pour s'occuper de tout ca.

      Dans le script Pokemon, vers les lignes 720, cherchez la méthode
      Code:

          def level_up(scene = nil)


      Quelques lignes après ca, vous devriez avoir ceci :
      Code:

            Audio.me_play("Audio/ME/PkmRS-LevelUp.mid")

      Remplacez ca par :
      Code:

            if $game_switches[900] == false
              Audio.me_play("Audio/ME/PkmRS-LevelUp.mid")
            end


      Un peu après, vous devriez trouver :
      Code:

            else
              new_scene = Pokemon_Window_Help.new
              new_scene.draw_text(@given_name + " monte au", "niveau " + @level.to_s + "!")
              new_scene.update
              Input.update
              until Input.trigger?(Input::C)
                Graphics.update
                Input.update
              end
              new_scene.dispose
              Graphics.update
              level_up_window_call(list0, list1, new_scene.z_level + 1000)
              refresh_skill
            end

      que vous allez remplacer par :
      Code:

            else
              if $game_switches[900] == false
                new_scene = Pokemon_Window_Help.new
                new_scene.draw_text(@given_name + " monte au", "niveau " + @level.to_s + "!")
                new_scene.update
                Input.update
                until Input.trigger?(Input::C)
                  Graphics.update
                  Input.update
                end
                new_scene.dispose
                Graphics.update
                level_up_window_call(list0, list1, new_scene.z_level + 1000)
                refresh_skill
              end
            end


      Maintenant, passons au cas épineux de l'apprentissage des attaques à la pension pokémon. Dans la méthode level_up, c'est
      Code:

      refresh_skill
      qui gère cet apprentissage. Si vous voulez qu'au retrait du pokémon de la pension, le joueur puisse avoir le choix d'apprendre ou non toutes les attaques qu'aurait du apprendre le pokémon normalement, remplacez juste, dans l'extrait précédent,
      Code:

                refresh_skill
              end
            end

      par
      Code:

              end
              refresh_skill
            end

      et voilà le travail !

      Continuons. "Attends, si j'ai eu des nouveaux pokémons qui ont pris la place du pokémon que j'ai confié, je vais en écraser pour remettre mon petit poké !" Rappelez vous le point n°4 (Restituer les données sauvegardées), l'explication de la méthode pour remettre le pokémon en dernière position dans l'équipe y est détaillée. Ici je me contenterai de redonner la commande concernée :
      Code:

      $pokemon_party.actors[$pokemon_party.size] = $game_variables[900]

      Pour les explications détaillées, relire le point 4.

      Bon voilà, le pokémon est récupéré, mais qui va payer l'éleveur ? Il ne touche aucune subventions, lui (sa nourriture n'est pas bio !) donc faut le payer, ce brave gars ! Via la commande d'évent "Ajouter / retirer monnaie", vous allez simplement retirer le montant contenu dans la variable 898, le coût de la pension.

      Surtout, n'oubliez pas de couper le switch à ce moment là ! (avant ou après avoir payé, mais dans tous les cas, avant la fin de l'évent ! oublier de le couper ferait que lorsqu'un pokémon gagnerait un niveau, cela ne vous serait plus annoncé, et en outre il pourrait ne plus apprendre d'attaque (>> selon votre choix de permettre ou non au joueur d'apprendre les attaques à son pokémon)

      NB : vous aurez noté que j'ai une condition supplémentaire sur mon évent, "Si variable 899 est strictement supérieure à 0", elle me sert juste parce que mon éleveur dit autre chose si le pokémon n'a pas gagné de niveaux. Elle n'est pas essentielle, elle sert juste à faire plus réaliste.

      NB2 : avant qu'on ne me pose la question, OUI, vous avez le droit de changer tous les numéros de variables, d'interrupteurs & d'interrupteurs locaux que vous voulez ! Le tout, c'est que si vous remplacez la variable 900 (pokémon confié) par la variable X, vous le fassiez partout et non sur une seule ! En outre, vous pouvez remplacer mon switch local A par n'importe quel autre interrupteur (local ou non) tant que c'est le même qui est activé page 1 et qui active la page 2. Et n'oubliez pas de modifier en conséquence le bout de script en modifiant, si besoin est, le n° d'interrupteur qui fera augmenter le niveau de vos pokémons silencieusement !
      Revenir en haut 



      Vous êtes perdus 

      Un seul remède : vous relisez ce tuto et vous appliquez bêtement ce que j'ai écris sans tenir compte de mes explications. Ou, si vous tenez absolument à comprendre ce que vous faites, alors relisez ce tuto autant de fois que nécessaire
      Revenir en haut 

      Posté par Shimo le 19 Aoû - 15:59 (2008)
      :shock: Sphinx tu me sidère!! T'es vraiment doué :mrgreen: Grâce à toi on pourra enfin voler les PoKéMoN des gentils et les rendre en l'état après Bouche extensiblek: Nos jeux seront encore plus réels!!!!!! Bravo!! Merci beaucoup Sphinxinounet!!! Bouche extensiblek:
      (Pom-pom-pom! Un de plus qui va se doré au soleil de mes crédits Bouche extensiblek: ) ^-^

      Posté par Sphinx le 19 Aoû - 16:11 (2008)
      :lol: merci ^_^


      Clin d'œil foireux mais tu sais, c'est toi (enfin ton tuto Petit saligaud mal élevé) qui m'a filé l'idée de tester Clin d'œil foireux J'ai tendance à essayer tout et n'importe quoi pour voir ce que ca donne :mrgreen: et le mieux, c'est qu'avec quelques fonctions print, j'arrive facilement à repérer ce que je fais, ce qui s'active, ... :mrgreen:


      J'ai même essayé "ajouter_pokemon($game_variables[N])" mais là ca n'a pas marché, le système n'a pas aimé :mrgreen: pas grave, j'ai trouvé comment faire autrement (voir le point Restituer les données sauvegardées) :mrgreen:


      mais merci quand même Amélia :mrgreen:

      PS : c'est dans ce but là que j'ai réfléchit à ce genre de système ^_^

      Posté par Shimo le 19 Aoû - 16:58 (2008)
      Ah! Oki! :mrgreen: Je suis content de t'avoir inspirer Bouche extensiblek: (faudrais que je me mette au Ruby moi Yeux motorisés )
      Apparement on peut faire plein de truks avec le Ruby :mrgreen: (T'as pas des bons liens pour passer les vacances? Et faut-il aprendre le C++? :evil: )
      Enfin bon voilou vraiment BRAVO!!

      Posté par Sphinx le 19 Aoû - 17:19 (2008)
      xD Je ne connais pratiquement rien en ruby, tu sais ? Le peu que je sais, jl'ai appris sur le tas et ca me permet juste de faire des modifs ici et là ou encore des ptits systèmes comme ca =)

      Posté par Shimo le 19 Aoû - 17:48 (2008)
      :shock: Ben je devrai me mettre à trafiquer par ci par-là une copi de mon jeu :mrgreen: ^-^

      Posté par Wescoeur le 19 Aoû - 18:06 (2008)
      On peut faire des trafiques de pokés maintenant, paf je fais disparaitre un donphan et boum il se transforme en Mew^^ bon travail Sphinx^^

      Posté par Sphinx le 19 Aoû - 18:49 (2008)
      Clin d'œil foireux Vous allez encore pouvoir me faire une ola alors Clin d'œil foireux


      Petit plus : déterminer l'index d'un pokémon et l'utiliser

      ^_^ bonne lecture ! Mais pensez à relire le dico Sphinxlandais - Francais au début du tuto, parce qu'avec ce nouveau point, j'ai utilisé un peu de nouveau vocabulaire Clin d'œil foireux

      Posté par Krosk le 25 Aoû - 11:26 (2008)
      parenthèse: pokemon_index acceptait déjà le fait d'ajouter un nom au lieu d'un id. Je crois. (d'après le manuel en tout cas... ca buggait peut-être)

      Posté par Sphinx le 25 Aoû - 12:11 (2008)
      ^_^ ah jsais pas =) (j'avais pas trouvé de méthode de conversion là où moi j'en ai mis une, mais c'est pas impossible ouaip, puisque tu dois être mieux placé que moi pour le savoir ^_^)


      Clin d'œil foireux Je regarderai sur un projet PSP4G vierge (sur lequel aucune modif n'a été apportée) et je te dis ca après Clin d'œil foireux

      Posté par Krosk le 25 Aoû - 12:20 (2008)
      La méthode de conversion est placée "derrière", dans $pokemon_party.remove_id Clin d'œil foireux. M'enfin c'est qu'un détail.

      Posté par Sphinx le 26 Aoû - 14:20 (2008)
      Maj !

      Gros plus : Application pour créer un éleveur pokémon

      Clin d'œil foireux Bonne lecture


      (PS : t'as raison Krosk, tant que ca marche, pas b'zoin de s'occuper du pourquoi & du comment... ^_^)

      Posté par Krosk le 26 Aoû - 14:44 (2008)
      Je ne sais pas ce qu'il en est dans le jeu officiel, mais si il faut autant de temps pour passer du niveau 1 au niveau 2 que de passer du niveau 90 au niveau 91, c'est une révolution.

      Je pense que le décompte devrait être un truc du style @steps_level * level plutot.


      Quoiqu'il en soit, merci pour cet ajout =)

      Posté par Sphinx le 26 Aoû - 16:28 (2008)
      ^_^" l'éleveur que je présente a un petit bug ^_^"


      >> je suis en train de le corriger Clin d'œil foireux


      edit : a plus bug Petit saligaud mal élevé

      ^_^ ouaip, Krosk, ca serait plus logique, et maintenant que je sais dans quelle mesure ca se calcule, je vais y travailler Clin d'œil foireux