[PSDK] Evolution spéciale

  • 12 Réponses
  • 73 Vues
*

Hors ligne Zenos

[PSDK] Evolution spéciale
« le: 04 juillet 2018, 21:55:55 »
Bonjour
Après une discussion avec Leikt sur le discord, il m'a aidé à créer une fonction pour faire une évolution. Le but etait d'avoir une évolution ou il y aurait deux Pokemon identiques, et qu'à la montée de niveau, l'un évolue et l'autre disparait.

Le soucis est que personne ne disparait.
Une solution ?
 

[PSDK] Evolution spéciale
« Réponse #1 le: 04 juillet 2018, 22:07:41 »
Si tu as fait la mise à jour Alpha 23.13, ce que te disait Leikt sur le "next if(e[:func] ...)" est fait. Plus besoin de chercher la ligne 158 quand tu peux simplement chercher le texte qu'il t'a donné.

Normalement tu as juste à configurer l'évolution spéciale comme il a dit et tester.
ln(yo) = <3
 

*

Hors ligne Zenos

[PSDK] Evolution spéciale
« Réponse #2 le: 04 juillet 2018, 22:11:35 »
Justement, j'ai fait tout ça en voyant que plus bas, ça avait été déjà fait.
Du coup ça n'a pas supprimé le 1er Pokemon
 

[PSDK] Evolution spéciale
« Réponse #3 le: 04 juillet 2018, 22:21:01 »
Ah oui :v

Dans GamePlay::Evolve il y a ces lignes là :
        if @clone.id == 291 and $actors.size < 6 and $bag.has_item?(4)
          $actors << PFM::Pokemon.new(292)
          $bag.remove_item(4)
        end
Elles ont pour effet d'ajouter un Pokémon à l'équipe et de supprimer un objet dans le sac, tu peux te baser sur ce code pour supprimer l'actor dans l'équipe qui n'est pas "@pokemon" mais qui porte l'id du Pokémon qui doit être supprimé.
ln(yo) = <3
 

*

Hors ligne Zenos

[PSDK] Evolution spéciale
« Réponse #4 le: 04 juillet 2018, 22:26:58 »
 if @clone.id == 819
          $actors << PFM::Pokemon.new(820)
          $actor.remove_actor(819)
        end
Un truc du genre ? Je sais absolument pas faire de code
 

[PSDK] Evolution spéciale
« Réponse #5 le: 04 juillet 2018, 22:33:32 »
Euh non ce code n'est pas possible, d'ailleurs il suffit pas juste de recopier sans comprendre.
id_pokemon = #l'id que tu veux
$actors.delete($actors.select { |pkmn| pkmn != @pokemon && pkmn.id == id_pokemon }.first)
Le code que j'ai donné supprime un Pokémon qui n'est pas @pokemon et qui porte l'id du Pokémon que tu veux supprimer.
ln(yo) = <3
 

*

Hors ligne Zenos

[PSDK] Evolution spéciale
« Réponse #6 le: 04 juillet 2018, 22:50:01 »
if @clone.id == 819
          $actors << PFM::Pokemon.new(820)
          $actors.delete($actors.select { |pkmn| pkmn != @pokemon && pkmn.id == 819 }.first)
        end
ça doit donner quelque chose comme ça du coup ?
 

[PSDK] Evolution spéciale
« Réponse #7 le: 04 juillet 2018, 23:03:46 »
Tu n'as pas besoin d'ajouter un nouveau Pokémon à l'équipe.
ln(yo) = <3
 

*

Hors ligne Zenos

[PSDK] Evolution spéciale
« Réponse #8 le: 04 juillet 2018, 23:07:13 »
@clone.id == 819
          $actors.delete($actors.select { |pkmn| pkmn != @pokemon && pkmn.id == 819 }.first)

Donc ça donne quelque chose comme ça. Je l'ajoute où du coup dès que c'est fini ?
 

[PSDK] Evolution spéciale
« Réponse #9 le: 04 juillet 2018, 23:09:59 »
Avec la condition c'est quand même mieux.
ln(yo) = <3
 

*

Hors ligne Zenos

[PSDK] Evolution spéciale
« Réponse #10 le: 04 juillet 2018, 23:25:05 »
Avec if au début et end à la fin ?
 

*

Hors ligne Leikt

[PSDK] Evolution spéciale
« Réponse #11 le: 04 juillet 2018, 23:51:48 »
if @clone.id==819
  $actors.delete($actors.select { |pkmn| pkmn != @pokemon && pkmn.id == 819 }.first)
end
Se traduit en pseudo-code
SI l'id du clone est 819
ALORS supprimer le premier de tous les pokemons de l'équipe ayant l'id 819
FIN
== test si deux trucs sont égaux ou pas

J'avais pas compris que tu voulais supprimer le deuxième pokémon. En fait les deux pokémon fusionnent c'est ça ?
 

*

Hors ligne Zenos

[PSDK] Evolution spéciale
« Réponse #12 le: 04 juillet 2018, 23:54:18 »
Oui voilà, c'est ça l'explication IG de ce qu'il se passe ^^'