Sujet n°14095
Posté par mangacharles le 28 Aoû - 18:08 (2014)
Titre : [Résolu] [Demande d'aide] Modifier le MenuA
Bonjour à tous.
Je suis actuellement en train de créer une map test, pour explorer les différentes possibilités offertes par le pack et aussi m'habituer à l'utilisation du logiciel.
J'ai jusqu'ici réussi à trouver des solutions en glanant des informations sur le forum, mais le suivant demeure un obstacle.
J'utilise PSP 0.8, avec le fichier Data actualisé.

Je cherche à afficher une étoile dans le résumé quand le pokémon est shiney. Pour ce faire, j'ai préféré créer un deuxième fond, appelé MenuAfondSH.png (je trouvais cela plus simple que de devoir incruster l'étoile avec les coordonnées et tout).
MenuAfond

MenuAfondSH


Voilà la manière dont j'ai procédé
Code:

236     case @index
237     when 0 # Infos générales
238     if @shiny = true
239          then @background.bitmap = RPG::Cache.picture("MenuAfondSH.png")
240          else @background.bitmap = RPG::Cache.picture("MenuAfond.png")
250      end   


Seulement, que le Pokémon soit shiny ou non, le fond reste le même.
Je pense que la variable "@shiny" n'est pas la bonne variable, mais je ne sais pas par quoi la remplacer. J'ai essayé "pokemon.shiny = true" mais ce n'est pas cela non plus...
Je m'en remet à vous !
Merci d'avance de votre aide.

Posté par Mack le 28 Aoû - 18:10 (2014)
En programmation, pour vérifier si une condition est vrai, il faut un double égale :
if @shiny == true
Et en ruby, on ne met pas le then ^^.
Code:

    case @index 
    when 0 # Infos générales 
     if @shiny == true 
          @background.bitmap = RPG::Cache.picture("MenuAfondSH.png") 
          else @background.bitmap = RPG::Cache.picture("MenuAfond.png") 
      end

Posté par mangacharles le 28 Aoû - 18:28 (2014)
Merci de ta réponse si rapide !
En effet, le double égal est une erreur bête :p
J'ignorais cependant que le "Then" n'était pas utilisé.

J'ai donc testé avec la correction, mais apparemment le problème subsiste... Je pense que c'est vraiment la variable qui pose problème.

Posté par Mack le 28 Aoû - 19:05 (2014)
Entre le when 0 et le if, essais de rajouter
Code:
p @shiny

ça devrait t'ouvrir une fenêtre en pop up, avec la valeur de ta variable shiny.
Puisque ça marche pas ça devrait t'afficher false.
Si ça t'affiches true, c'est que ça merde autre part ^^.
( Enfin dans tout les cas ça merde autre part puisque si ça reste sur false, c'est que ça vient de la variable shiny xD )

Posté par mangacharles le 28 Aoû - 19:35 (2014)
Je viens de tester ta proposition, et en effet ça merde quelque part 8D
En fait, c'est le fondSH qui apparaissait à chaque fois, et donc j'ai bien "true" qui apparait à chaque fois.
Du coup, ça me conforte dans l'idée qu'il ne faut pas utiliser "@shiny". Je pense que cette variable est utilisée seulement au moment de la génération, et qu'ensuite il faut prendre quelque chose comme "@pokemon.shiny"

J'ai trouvé ça dans le script "pokemon"
Code:
    # Créer un Pokémon:
    #         @pokemon = Pokemon.new(id, level, shiny)


Je pense que c'est un truc du genre.

EDIT : En cherchant, j'ai trouvé ça... Je pense que c'est une bonne piste.
Code:
(vers le début)

          @pokemon_sprite = Sprite.new
      @pokemon_sprite.mirror = true
      @pokemon_sprite.z = @z_level + 4

plus loin (vers 400)

    def reset_pokemon_sprite
      @pokemon_sprite.visible = true
      @pokemon_sprite.bitmap = RPG::Cache.battler(@pokemon.battler_face, 0)
      @pokemon_sprite.x = 75
      @pokemon_sprite.y = 114
    end

Posté par Pαlвσlѕку le 28 Aoû - 21:05 (2014)
C'est pas la variable @shiny que tu dois tester mais la variable "@pokemon.shiny". Imbécile heureux

Je te met en garde que ceci te résoudra le problème mais qu'un autre va survenir rapidement.
Lorsque tu vas changer de Pokémon en restant dans le menu, le fond ne s'actualisera pas (donc même un Pokémon non shiny pourrait avoir une étoile, mais l'inverse est également possible).

La solution est d'actualiser, au moment adéquat, le fond du menu.
Tu devrais pouvoir y parvenir en modifiant la méthode refresh.

Bon courage. Gros matou qui ronronne

Posté par mangacharles le 29 Aoû - 21:47 (2014)
Je pense avoir déjà essayé, mais je vais réessayer, on ne sait jamais...
J'ignorais cependant ce point ! Peut-être que la variable est bonne, mais qu'il manque justement le "refresh"... Je revois tout ça demain, et je vous redit.

Edit : Finalement, la variable "@pokemon.shiny" fonctionne correctement. Le script est donc opérationnel.

Merci à tous pour votre aide !