Partagez
Aller en bas
avatar
Cantarelle
Membre

Nombre de messages : 26
Age : 31
Distinction : aucune
Date d'inscription : 11/11/2017

Compétence Scan

le Jeu 18 Jan 2018 - 18:10
Bonjour ou bonsoir,

On n'est plus très nombreux à utiliser RPG Maker XP, mais je me dis que ça peut toujours servir.
Mais bon, vu le nombre étonnant de scripts mal codés et/ou qui plantent... Et la compétence Scan a eu énormément de versions... Et plus de la majorité était aussi pourrie les unes des autres. Et ce, malgré la simplicité de ce que je vais proposer... Ça montre à quel point, à l'époque, il suffisait qu'on fasse un truc dégueulasse pour qu'on ait le profil "scripteur".

Ce script marche parfaitement sur un projet vierge, mais aussi sur énormément de projets usine à gaz.

Avant de le poster, je tiens à préciser une chose. Pour l'aspect visuel, pour être franche, je m'en balance. Le visuel diffère d'un projet à l'autre. Donc, si vous voulez un truc qui vous ressemble visuellement, ce n'est pas mes affaires! Pour être encore plus franche, démerdez-vous.


I - Mise en pratique

1 - Mettre ces lignes dans un event commun avec l'event : insérer un script. Dans notre exemple, on va l'appeler "competence_scan"

Code:
index = $scene.active_battler.current_action.target_index
target = $game_troop.smooth_target_enemy(index)
scan = Scene_Scan.new(target)

1 bis - Créer une compétence scan

2 - Mettre dans cette compétence scan l'event commun (dans notre exemple : "competence_scan")

3 - Mettre ces scripts avant le main (le premier avant les autres. De préférence aussi, respectez l'ordre).

Code:
# ==============================================================================
# ** Scene_Battle
# ------------------------------------------------------------------------------
# Par Mikltov / Rutsuku Fushin / Cantarelle
# ------------------------------------------------------------------------------
#   Cette extension permet de mettre en lecture l'attribut active_battler,
#  necessaire pour le scan.
#   ATTENTION : A mettre avant Scene_Scan et Window_Scan, a cause du attr_reader!
# ==============================================================================

class Scene_Battle

  attr_reader :active_battler

end

Code:

# ==============================================================================
# ** Scene_Scan
# ------------------------------------------------------------------------------
# Par Mikltov / Rutsuku Fushin / Cantarelle
# ------------------------------------------------------------------------------
#  Un script pour montrer le resultat des scans en combat. Ceci n'est que la
# partie modele / controleur.
# ==============================================================================
class Scene_Scan < Window_Base

  # ----------------------------------------------------------------------------
  # def initialize
  # ----------------------------------------------------------------------------
  def initialize(enemy)
    @scan_window = Window_Scan.new(enemy)
    @affichage = true
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if @affichage == false
        break
      end
    end
    @scan_window.dispose
  end

  # ----------------------------------------------------------------------------
  # def update
  # ----------------------------------------------------------------------------
  def update
    if Input.trigger?(Input::B)
      update_command
    end
  end

  # ----------------------------------------------------------------------------
  # def update_command
  # ----------------------------------------------------------------------------
  def update_command
    $game_system.se_play($data_system.cancel_se)
    @affichage = false
  end

# ==============================================================================
# end class
# ==============================================================================  
end
PS : je sais que j'aurai pu hériter d'une autre Window. J'ai eu la flemme sur ce coup-là

Code:
# ==============================================================================
# ** Window_Scan
# ------------------------------------------------------------------------------
# Par Mikltov / Rutsuku Fushin / Cantarelle
# ------------------------------------------------------------------------------
#  Un script pour montrer le resultat des scans en combat. Ceci n'est que la
# partie visuelle.
#  Sachant que le visuel differe selon les projets, demerdez-vous pour avoir
# ce que vous voulez. Je n'ai fait qu'une base
# ==============================================================================

class Window_Scan < Window_Base

  # ----------------------------------------------------------------------------
  # def update
  # ----------------------------------------------------------------------------
  def initialize(enemy)
    # --------------------------------------------------------------------------
    # 4 valeurs obligatoires dans le super
    #   - position du x de depart
    #   - position du y de depart
    #   - position de x a l'arrivee
    #   - position de y a l'arrivee
    # --------------------------------------------------------------------------
    super(20, 10, 300, 350)
    self.contents = Bitmap.new(width - 32, height - 32)
    # --------------------------------------------------------------------------
    # definition de la police et de sa taille
    # --------------------------------------------------------------------------
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    # --------------------------------------------------------------------------
    # definit l'opacite de la boite de dialogue
    # --------------------------------------------------------------------------
    self.back_opacity = 255
    refresh(enemy)
  end
  
  # ----------------------------------------------------------------------------
  # def refresh
  # ----------------------------------------------------------------------------
  def refresh(enemy)
    self.contents.clear
    self.contents.draw_text(0, 0, 450, 28, "name : " + enemy.name.to_s)
    self.contents.draw_text(0, 32, 450, 28, "hp : " + enemy.base_maxhp.to_s)
    self.contents.draw_text(0, 64, 450, 28, "sp : " + enemy.base_maxsp.to_s)
    self.contents.draw_text(0, 96, 450, 28, "atk : " + enemy.base_atk.to_s)
    self.contents.draw_text(0, 128, 450, 28, "pdf : " + enemy.base_pdef.to_s)
    self.contents.draw_text(0, 160, 450, 28, "mdf : " + enemy.base_mdef.to_s)
    self.contents.draw_text(0, 192, 450, 28, "str : " + enemy.base_str.to_s)
    self.contents.draw_text(0, 224, 450, 28, "agi : " + enemy.base_agi.to_s)
    self.contents.draw_text(0, 256, 450, 28, "dex : " + enemy.base_dex.to_s)
    self.contents.draw_text(0, 288, 450, 28, "int : " + enemy.base_int.to_s)
  end

# ==============================================================================
# end class
# ==============================================================================
end


II - In visu...


Quand je vous disais que j'en avais rien à faire du visuel...



J'espère que ça vous servira quand même.
avatar
Spytje
Administrateur

Nombre de messages : 5899
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Compétence Scan

le Sam 24 Fév 2018 - 23:48
Effectivement on est plus très nombreux à utiliser XP mais merci quand même pour le partage de cette "technique" Smile
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum