Sujet n°1423
Posté par
Luzert le
6 Aoû - 00:23 (2008)Titre :
Ok - Bug du Pokémon au niveau MAX.Voilà, je vient de catcher un bug en dévellopant quelques petits trucs dans les script, je vous dévoile le mode opératoire:
J'ai monté le level maximum à 500 (Quand j'y repense j'me dit que c'est pas humains comme stats... VOIR) et j'ai ensuite crée des Pokémons au niveau maximum avec le Debug (que je trouve super bien pensé!).
Test 1 : J'ai livré une bataille (pas trop dure) avec un ennemi ébahi devant Deoxys (Debug :p) et je remporte facilement le victoire (Deoxys level 500, ca se comprend vite, non?)
Test 2 : Utilisation d'un super-bonbon sur un Pokémon de niveau maximum, de façon à tester le fait que le jeu plante.
C'est là que le bug fait son apparition: Au level max, le gain d'XP fait planter le jeu, je n'ai pas vérifié si l'effet aurait été pareil si je n'avais pas modifié le level max!! Damnation diront certains, mais rassurez-vous, j'ai déjà analysé la chose, j'ai reprogrammé certaines lignes de script dans Gestion>Pokémon (Oui je sais, j'ai trafiqué votre boulot, je vais être privé de dessert, encore!)
Voici ma solution!
À partir de la ligne 705, séléctionnez les deux premières instructions:
Code: |
def level_check if @level >= MAX_LEVEL return false end if @exp >= exp_list[@level+1] return true else return false end end def level_up(scene = nil) # Calculs if ]@exp < exp_list[@level+1] @exp = exp_list[@level+1] end
|
Remplacez-les par ceci:
Code: |
if @level >= MAX_LEVEL return false end if @exp >= exp_list[@level+1] return true else return false end end def level_up(scene = nil) # Calculs if @level < MAX_LEVEL else return false end
|
Bon, pour ceux qui ne connaissent pas, j'explique: Déjà, le script précédent, je vois pas du tout comment il fonctionnait, mais je m'en fout (^^) Je remplace l'instruction de départ par "Si le pokémon est level Max: ne pas level up; sinon: level up".
Simple, j'ai vérifié pour les super-bonbons, le super-bonbons ne bug pas, seulement le bonbon est perdu...
Si ce moyen de réparer le bug, faites-le moi savoir, s'il-vous-plaît. =)
Cordialement,
Luzert
Posté par
Zelda le
6 Aoû - 00:28 (2008)Vla que t'arrive que tu nous répare déjà un bug !
Bravo !
Posté par
Luzert le
6 Aoû - 00:31 (2008)Il ne faut pas se méprendre, pour moi ca fonctionne nickel chrome! Mais je ne sais pas si cela ne pourrait pas engendrer une catastrophe pixellienne (Je suis torsionnaire des mots Français, je préviens!)
Posté par
Zelda le
6 Aoû - 00:32 (2008)Ah bah comme ça on est deux !
Mon mot préféré c'est : Doublationner ( quand on double les voitures
)
Posté par
Luzert le
6 Aoû - 00:46 (2008)Peu importe, je viens d'analyser le script, ça devrait fonctionner parfaitement, aucunes conséquences dues à la modification de ces lignes.
Posté par
Shimo le
6 Aoû - 08:44 (2008)C'est vrai j'avais déjà constater ce bug ^^"J'avais tester de nouveau PokéMoN qui devais évoluer au lv 100 mais quand je l'ai créé je me suis gouré et j'ai créé un PoKéMoN (Grâce à ce très cher mode débug) un PoKéMoN de niveau 100. Je me suis dit pas grave et pour rigoler je lui ai donné un [SUPER BONBON] et là... paf! Mon jeu à planté! ...
Enfin ce n'était qu'un jeu vierge et test mais ça m'a quand même marqué...
PS: Si j'ai bien compris on remplace les lignes que tu indique en premier par celles que tu nous donne ensuite et ça marche après c'est ça? Le bonbon est gaché mais c'est tout?
Ben si c'est ça c'est cool!
Bravo
k: ^-^
Posté par
Luzert le
6 Aoû - 08:56 (2008)Merci, pour le bonbon perdu, on va accuser la gourmandise des Pokémons ... (lol)
Merci, j'dois dire que je suis assez fier et content de cette découverte...
Posté par
Shimo le
6 Aoû - 09:35 (2008):mdr: Mais tu as raison car je me suis toujours demander si tous les PoKéMoN sont des économiseurs !! x)
Par exemple toi même quand t'es en pleine forme si on te propose un soda tu va refuser? Ben non! :mdr:
Bon donc c'est bon je vais voir si je le met =)
PS :Tu need crédit?
Posté par
Luzert le
6 Aoû - 09:48 (2008)Normalement, tu devrais pas avoir de problème, chez moi il fonctionne impec' ! 'Faut croire que je suis né pour la programmation, j'arrête pas de faire des carton en Ruby, C/C++ et xHTML, je suis heureux.
PS : Ouais, need à fond, fais moi MP pour en discuter.
Posté par
Sphinx le
6 Aoû - 10:59 (2008) je me suis également penché sur ce problème de super bonbon quand j'ai lu que vous perdiez cet objet si précieux, et j'ai trouvé la solution (une alternative efficace à la solution de luzert, puisque le bonbon n'est simplement plus utilisé donc pas de risque de rencontrer le bug ^_^)
Script Pokemon_Item / Data, vers la ligne 574 à 583, vous devriez avoir ceci :
Code: |
if data(id)["level_up"] != nil has_effect = true for i in 1..data(id)["level_up"] pokemon.level_up(scene) if pokemon.evolve_check != false scenebis = POKEMON_S::Pokemon_Evolve.new(pokemon, pokemon.evolve_check, scene.z_level + 300) scenebis.main end end end |
Remplacez le simplement par ceci :
Code: |
if data(id)["level_up"] != nil and $pokemon_party.actors[$game_variables[4]].level < MAX_LEVEL has_effect = true for i in 1..data(id)["level_up"] pokemon.level_up(scene) if pokemon.evolve_check != false scenebis = POKEMON_S::Pokemon_Evolve.new(pokemon, pokemon.evolve_check, scene.z_level + 300) scenebis.main end end end |
^_^ oui, je n'ai fait que rajouter Code: |
and $pokemon_party.actors[$game_variables[4]].level < MAX_LEVEL |
à la première ligne du premier extrait de code...
Code: |
$pokemon_party.actors[$game_variables[4]] |
sert à déterminer sur quel pokémon on utilise l'objet (ici le super bonbec :mrgreen:)
sert à extraire le niveau du dit pokémon au format nombre, on peut donc l'utiliser.
bon là, je reconnais que je me suis inspiré du travail de luzert, en effet je teste si le niveau du pokémon est inférieur au niveau max (auquel cas le bonbon agit) ou non (auquel cas le bonbon n'a strictement aucun effet ^_^)
=) Voilà =)
Posté par
Luzert le
6 Aoû - 11:09 (2008)Fascinant! Mais j'ai arangé mon jeu avec une grand einnovation, pas de level max (enfin, si, mais impossible à atteindre xD: 9999)
Posté par
Krosk le
6 Aoû - 17:05 (2008)Oui, j'avais déjà identifié le bug, il est censé etre déjà corrigé, mais merci d'avoir pointé du doigt ceci. J'exprime quand meme un doute sur:
Ou tu compare de l'exp à un niveau.
Posté par
Luzert le
6 Aoû - 17:55 (2008)Oui, j'avoue...
Posté par
Sphinx le
6 Aoû - 17:58 (2008) inutile de vous embêter avec le script Pokemon
^_^ la ptite modif de Pokemon_Item / Data est rapide, et après essais, je peux affirmer que ca marche :mrgreen:
Posté par
Luzert le
6 Aoû - 19:43 (2008)Mais il faut modif, ca bug aussi si ton Pokémon gagne de l'xp quand il est au maximum de son expérience. (par ex= lvl500 - xp:100%, si on gagne de l'xp, ca plante)
Posté par
Sphinx le
6 Aoû - 20:32 (2008)=) normalement un poké lv100 ne gagne pas d'exp
Posté par
Luzert le
6 Aoû - 20:33 (2008)Bah, au moins le script est arrangé, pour le reste, j'en ai rien à f***** xD
Posté par
Luzert le
7 Aoû - 09:26 (2008)UP! Les pokémons gagnait une infinité de level! Reglé : Nouveau script
Posté par
Krosk le
7 Aoû - 15:40 (2008)A propos de la modif de sphinx, la forme ci dessous est plus propre:
scrupt pokemon item / data lignes ~580
Code: |
if data(id)["level_up"] != nil has_effect = true for i in 1..data(id)["level_up"] if pokemon.level >= MAX_LEVEL has_effect = false break end pokemon.level_up(scene) if pokemon.evolve_check != false scenebis = POKEMON_S::Pokemon_Evolve.new(pokemon, pokemon.evolve_check, scene.z_level + 300) scenebis.main end end end |
Le test de niveau se fait sur "pokemon", et auqel cas si le niveau est supérieur ou egal a max level, le bonbon est sans effet (message ingame) et ne disparait pas.
J'ajoute une alternative a la modif proposée par luzert, a savoir:
script pokemon ligne 638
Code: |
def add_exp_battle(amount) @exp = (@exp > exp_list[MAX_LEVEL])? exp_list[MAX_LEVEL] : @exp + amount end |
a remplacer par
Code: |
def add_exp_battle(amount) @exp = (@exp + amount > exp_list[MAX_LEVEL])? exp_list[MAX_LEVEL] : @exp + amount end |
Ces 2 modifs devraient empecher la progression de niveau après le niveau max.
Posté par
Luzert le
21 Aoû - 18:30 (2008)Je constate que lorsqu'on utilise un super bonbon sur un pokémon, il up plus!
Posté par
Totox28 le
26 Aoû - 13:52 (2008)Oui !! :cry:
Posté par
Krosk le
26 Aoû - 14:28 (2008)Oui quoi?
Posté par
Sphinx le
26 Aoû - 14:29 (2008) Luzert a écrit: |
Je constate que lorsqu'on utilise un super bonbon sur un pokémon, il up plus! |
Je pense que c'est à ca que TIPLOUF a dit oui
(^_^ ma méthode est encore valable, tiplouf )
Posté par
Krosk le
26 Aoû - 14:35 (2008)Bah j'arrive à utiliser des supers bonbons chez moi. Le super bonbon marche, sauf sur un pokémon de niveau max.
Ca doit etre parce que vous avez mélangé les modifications par ci par là que ca ne marche plus. Alors annulez les modifications jusqu'à que ca fonctionne...
Posté par
Sphinx le
26 Aoû - 14:38 (2008)^_^ pas impossible
(>> si besoin est, reprenez le script de base correspondant sur un projet RMXP vierge & remplacez le votre avec
)