[PSDK] Récupérer donnée Pokemon dans le script "GamePlay::Sumary::C"

  • 11 Réponses
  • 308 Vues
*

Hors ligne Maxoumi

  • Le mec qui fait des choses et qui n'en fait pas
  • Membre intégré
  • ***
  • 129
  • Remercié: 35 fois
  • Membre
Bonjour !

Voilà j'aimerais mettre quelques conditions dans ce script et pour ceci j'aurais besoin de récupérer les informations du Pokémon.

J'aimerais récupérer la TAILLE du nom donné au Pokémon.
Et le NIVEAU du Pokémon.

On a déjà pas mal essayé de cherché avec SMB64 mais impossible de récupérer les infos ^^'

Voilà ! Si quelqu'un sait comment faire je suis preneur ^^
 

*

Hors ligne Leikt

Bonjour,

Vous avez la variable @pokemon qui est un PFM::Pokemon, pour récupérer la taille et le niveau :
niveau = @pokemon.level # Le niveau du pokemon
data_espece = GameData::Pokemon.get_data(@pokemon.id, @pokemon.form) # Récupère le GameData::Pokemon de l'espèce
taille= data_espece.height # La Taille du pokemon

Si tu veux récupérer d'autres attributs : regarde le haut des scripts PFM::Pokemon et GameData::Pokemon, tu aura la liste (ou même sur le Wiki, il y a tout normalement)
 
Utilisateurs ayant remercié ce post : Nuri Yuri

Il y a également un documentation relativement complète en terme d'informations sur les classes de PSDK : https://psdk.pokemonworkshop.com/yard/

Pour avoir les données brutes d'un Pokemon : https://psdk.pokemonworkshop.com/yard/GameData/Pokemon.html
Pour avoir les données relative d'un Pokémon : https://psdk.pokemonworkshop.com/yard/PFM/Pokemon.html
Ainsi, avec la ligne 2 de l'exemple de Leikt, c'est le lien GameData/Pokemon, la ligne 1 c'est le lien PFM/Pokemon. Le tout est de savoir que @pokemon contient un PFM::Pokemon.

Sinon, si l'objectif est d'afficher les informations, dans l'initialisation de la page C tu as quelque chose comme cela :
        add_text(19, 39, 66, 19, :level_text2, type: SymText)
Ceci permet d'afficher le texte du niveau du Pokémon avec le N. dedans ( https://psdk.pokemonworkshop.com/yard/PFM/Pokemon.html#level_text2-instance_method )
D'une manière similaire, tu peux afficher la taille du Pokémon ainsi :
        add_text(x, y, 120, 16, :height, type: SymText)
En vérifiant que dans PFM::Pokemon il y a bien la méthode height qui ne prend pas de paramètre et qui retourne la donnée que tu veux. (C'est le cas.)

Si une méthode n'existe pas, par exemple tu veux afficher un texte un peu plus précis tu peux toujours la créer dans un script perso :
module PFM
  class Pokemon
    # Return the height text of the pokemon like this : "Height : #{height_of_pokemon}"
    # @return [String]
    def height_text
      return "Hauteur : #{self.height}m"
    end
  end
end
Ainsi plutôt que de mettre :height dans la commande que je t'ai donné tu met :height_text et ça affichera Hauteur : 1.5m si le Pokémon fait 1.5m de haut.
ln(yo) = <3
 
Utilisateurs ayant remercié ce post : Splifingald

*

Hors ligne Maxoumi

  • Le mec qui fait des choses et qui n'en fait pas
  • Membre intégré
  • ***
  • 129
  • Remercié: 35 fois
  • Membre
En fait je souhaite récupérer le niveau et la taille du nom dans une variable pour permettre de faire des équation dans le script ( Par exemple mettre une image en fonction du niveau )

Et le principal problème de tout ça c'est que sous le script "GamePlay::Sumary::C" il n'est pas possible de recuperer les infos avec un simpe @pokemon.level

J'ai souvent utilisé ceci :
      if(@pokemon.level>99)
        @n.visible = false
      elsif(@pokemon.level>9)
        @n.x = 136
      else(@pokemon.level<10)
        @n.x = 152
      end

Mais une fois inclut dans le summary C le "@pokemon.level" renvoie TOUJOURS 1

Et nous avons essayé aussi des choses comme
- @pokemon.name.size
- @pokemon.given_name.size
et d'autres trucs encore. Et la ça nous renvoie juste le nombres de lettre en pokemo. et .size =/ ( Sois 10 pour given_name )

Du coup je ne vois pas comment faire =S
 

*

Hors ligne Leikt

C'est quoi Summary::C
 

*

Hors ligne Maxoumi

  • Le mec qui fait des choses et qui n'en fait pas
  • Membre intégré
  • ***
  • 129
  • Remercié: 35 fois
  • Membre
C'est le menu des informations Pokemon ( Le 3eme ) A étant le premier et B le 2eme )

On y accède avec le menu de l’équipe pokemon et en allant dans les stats du pokémon ^^
 

*

Hors ligne Leikt

Ah ! Tu parles de la méthode draw_C !

Avant d'aller plus loin, tu es en quelle version de PSDK ?
Le script suivant est pour la 22.2.
J'ai juste modifier la ligne suivante :
bmp.draw_shadow_text(4,0,95,20,"Aptitudes",0,8)
# Devient
data_species=data_espece = GameData::Pokemon.get_data(@pokemon.id, @pokemon.form)
bmp.draw_shadow_text(4,0,95,20,"Lvl:#{@pokemon.level} Height=>#{data_species.height}",0,8)
et voici le résultat quand je sélectionne une aptitude à afficher :


Ca fonctionne, voici le script complet.

Spoiler
module GamePlay
  class Sumary < Base
    def draw_C
      texts = _get_file(27)
      bmp=@text.bitmap
      data_species=data_espece = GameData::Pokemon.get_data(@pokemon.id, @pokemon.form)
      bmp.draw_shadow_text(4,0,95,20,"Lvl:#{@pokemon.level} Height=>#{data_species.height}",0,8)
      bmp.draw_shadow_text(198,42,95,20,"Capacités Combat",0,8)
      bmp.draw_shadow_text(19,23,66,19,@pokemon.given_name,0,8)
      bmp.draw_shadow_text(19,39,66,19,"#{texts[29]}#{@pokemon.level}",0)
      bmp2=RPG::Cache.interface(Gender[@pokemon.gender])
      bmp.blt(85,27,bmp2,bmp2.rect)
      @ball.bitmap=RPG::Cache.ball(@pokemon.ball_sprite)
      @ball.src_rect.set(0,78,16,26)
      bmp.draw_shadow_text(4,55,95,18,_get(23,7),0,8)
      bmp.draw_shadow_text(4,71,95,16,@pokemon.item_name)
      ss=@pokemon.skills_set
      4.times do |i|
        skill=ss[i]
        next unless skill
        draw_type(7,112+i*32,skill.type) #164 90
        bmp.draw_shadow_text(41,111+i*32,85,16,skill.name)
        bmp.draw_shadow_text(54,127+i*32,20,16,texts[32])
        bmp.draw_shadow_text(67,127+i*32,52,16,"#{skill.pp}#{texts[33]}#{skill.ppmax}",1)
      end
      @skill_selector.visible=true
      @skill_selector.y=109+32*@sub_index
      if(@sub_index2)
        @skill_selector.color.set(0,0,255)
        bmp.blt(@skill_selector.x,109+32*@sub_index2,@skill_selector.bitmap,@skill_selector.src_rect)
      else
        @skill_selector.color.set(0,0,0,0)
      end
     
      bmp2=@pokemon.icon
      rect=bmp2.rect.clone
      rect.x=rect.width
      rect.width*=-1
      bmp.blt(168,78,bmp2,rect)
      draw_type(205,92,@pokemon.type1)
      draw_type(239,92,@pokemon.type2)
      bmp.draw_shadow_text(173,110,68,16,texts[36],0,8)
      bmp.draw_shadow_text(173,127,68,16,texts[37],0,8)
      bmp.draw_shadow_text(173,143,68,16,texts[39],0,8)
      skill=ss[@sub_index]
      return unless skill
      bmp2=RPG::Cache.interface("C#{skill.atk_class}")
      bmp.blt(248,112,bmp2,bmp2.rect)
      v=skill.power
      bmp.draw_shadow_text(243,127,42,16,v>0 ? v.to_s : _get(11,12),1)
      v=skill.accuracy
      bmp.draw_shadow_text(243,143,42,16,v>0 ? v.to_s : _get(11,12),1)
      bmp.draw_multiline_text(132, 159, 151, 16, skill.description)
    end
  end
end
 

*

Hors ligne Maxoumi

  • Le mec qui fait des choses et qui n'en fait pas
  • Membre intégré
  • ***
  • 129
  • Remercié: 35 fois
  • Membre
Je suis en 23.10 ^^

Et sinon je pense que je me suis mal fait comprendre =/ Je n'ai jamais parlé de la "Taille du Pokemon" mais la bien la "Taille du Nom" du Pokémon.
Par exemple :
- Pikachu fera "7" de taille.
- Bulbizarre fera "10" de taille.
- Coxy fera "4" de taille.

Et je ne souhaite pas du tout mettre ça dans un texte ! Globalement j'ai une barre avec une taille variable. Et cette barre et plus ou moin grande selon la "Taille du Nom du Pokemon"

Globalement j'aimererais un truc du genre

        @w = @Pokemon_name.size * 18
        push(20, 0, "whitebar").src_rect.set(0, 0, 44+@w, 24)
Et pour ce qui est du niveau du pokémon je cherche a avoir une image ":N" qui a une position X en fonction du niveau comme ceci :

        if(@pokemon.level>99)
          push(-500, -500, "level_n")
        elsif(@pokemon.level>=10)
          push(230, 14, "level_n")
        else(@pokemon.level<=9)
          push(276, 14, "level_n")
        end

Pour celui-ci le code fonctionne sur d'autres script, mais sur celui-ci particulièrement ( Et les autres script Summary ) il ne fonctionne pas !
« Modifié: 23 juin 2018, 10:21:47 par Maxoumi »
 

*

Hors ligne Leikt

Je mélange tout... Réexpliques.

Les conditions, tu veux les mettre dans une conditions d'event, ou dans le script Summary ?
Tu veux la longueur du nom en nombre de caractère, pareil pour le surnom ? Sous forme de variable, ou affiché à l'écran ?
Tu veux aussi le niveau du pokémon. Sous forme de variable ou de texte affiché à l'écran ?

Bref : décris-nous le résultat que tu veux obtenir stp. Ce sera plus facile pour comprendre ce que tu veux faire ^^
 
Utilisateurs ayant remercié ce post : Maxoumi

*

Hors ligne Maxoumi

  • Le mec qui fait des choses et qui n'en fait pas
  • Membre intégré
  • ***
  • 129
  • Remercié: 35 fois
  • Membre
Je mélange tout... Réexpliques.

Les conditions, tu veux les mettre dans une conditions d'event, ou dans le script Summary ?
Dans le script summary
Tu veux la longueur du nom en nombre de caractère, pareil pour le surnom ? Sous forme de variable, ou affiché à l'écran ?
Oui je veux la longueur du surnom. Et sous forme de variable. Aucunement besoin de l'affiché, je souhaite juste avoir ce chiffre pour un calcul.
Tu veux aussi le niveau du pokémon. Sous forme de variable ou de texte affiché à l'écran ?
Pareil, je le souhaite sous forme de variable sans besoin de l'affiché.

Bref : décris-nous le résultat que tu veux obtenir stp. Ce sera plus facile pour comprendre ce que tu veux faire ^^


Voilà ^^

Sinon voicis une image pour visualisé un peu la choses. Le Violet = la barre blanche ( Derrière le nom, le sprite et le niveau ). Elle changera de taille en fonction de la taille du nom du pokémon )
Et en Rouge c'est le ":N" qui va changer de position en fonction du niveau du pokémon ( Globalement je veux que le ":N" sois collé au niveau, et qu'il sois invisible si le niveau = 100 )
Image pour visualisé

GLOBALEMENT, je sais plus ou moin comment récupérer ce que je souhaite. Ce que je n'arrive pas a comprendre et a résoudre. C'est pourquoi dans les autres script @pokemon.level me donne bien le niveau du pokémon. Et dans celui-ci il me renvoie juste un simple "1".
« Modifié: 23 juin 2018, 10:43:51 par Maxoumi »
 

[PSDK] Récupérer donnée Pokemon dans le script "GamePlay::Sumary::C"
« Réponse #10 le: 23 juin 2018, 11:28:05 »
Essaie de voir du coté de def data=(v)
Tu peux écrire ton code après l'appel de super :p (en utilisant v comme étant le Pokémon)
ln(yo) = <3
 
Utilisateurs ayant remercié ce post : Maxoumi, yyyyj

*

Hors ligne Maxoumi

  • Le mec qui fait des choses et qui n'en fait pas
  • Membre intégré
  • ***
  • 129
  • Remercié: 35 fois
  • Membre
[PSDK] Récupérer donnée Pokemon dans le script "GamePlay::Sumary::C"
« Réponse #11 le: 23 juin 2018, 12:12:18 »
Merci beaucoup a toi yuri ^^ J'ai réussi ce que je voulais faire !