Sujet n°10482
Posté par Giratinaprimal le 27 Sep - 22:19 (2011)
Titre : [PSP 4G+] La VS bar ne s'affiche pas
Petite précision avant de commencer : une VS Bar est l'animation qui se déclenche lors de combats contre des
Dresseurs spéciaux (rivaux, champions, ligue, etc...).


Le problème est là. Les animations ne se déclenchent pas.


J'ai créé une animation qui fait "vibrer" le sprite VS, c'est le "animation(700, true)" présent dans le script ci-dessous.
Le script proprement dit a été entièrement tapé par mes soins. Mais il ne veut pas se déclencher (ou alors, il se déclenche mais de façon invisible) :
Script Battle_VSBar

Code:
#==============================================================================
# ■ Battle_VSBar
# Pokemon Script Project - GiratinaPrimal
# 27/09/11
#-----------------------------------------------------------------------------
# Animations pré-combat contre les Dresseurs spéciaux
#-----------------------------------------------------------------------------
# A vous de modifier les conditions d'apparition de la/des VS-Bar(s),
# les images impliquées, etc...
#-----------------------------------------------------------------------------


module POKEMON_S
  class Pokemon_Battle_Trainer < Pokemon_Battle_Core
    def vs_bar
        string_vsbar = "VSBar "
        case $game_variables[0012]
        when 1 # Champion Martin
          vs_bar_picture = "X1"
          faceset = "11"
          name_enemy = "Martin"
        when 2 # Champion Eva
          vs_bar_picture = "X2"
          faceset = "26"
          name_enemy = "Eva"
        when 3 # Champion Camille
          vs_bar_picture = "X3"
          faceset = "2D"
          name_enemy = "Camille"
        when 4 # Champion Vincent
          vs_bar_picture = "X4"
          faceset = "48"
          name_enemy = "Vincent"
        when 5 # Champion Jules
          vs_bar_picture = "X5"
          faceset = "2B"
          name_enemy = "Jules"
        when 6 # Champion Julie
          vs_bar_picture = "X6"
          faceset = "16"
          name_enemy = "Julie"
        when 7 # Champion Romain
          vs_bar_picture = "X7"
          faceset = "4C"
          name_enemy = "Romain"
        when 8 # Champion Marc
          vs_bar_picture = "X8"
          faceset = "21"
          name_enemy = "Marc"
        when 9 # Rival
          vs_bar_picture = "Rival5"
          faceset = "HeroXc"
          name_enemy = "\N[2]"
        when 10 # N
          vs_bar_picture = "Rival5"
          faceset = "5N"
          name_enemy = "N"
        when 11..58 # Champions non-officiels
          vs_bar_picture = "LX"
          faceset = $game_variables[0012]
          case $game_variables[0012]
          when 19 then faceset = "51a"
          when 20 then faceset = "51b"
          when 29 then faceset = "51c"
          when 30 then faceset = "58a"
          when 39 then faceset = "58b"
          end
          name_enemy = ""
        when 61..94 # Conseil 4 non-officiel
          vs_bar_picture = "LX"
          case $game_variables[0012]
          when 63 then faceset = "1C", name_enemy = "Aldo"
          when 71 then faceset = "2A", name_enemy = "Clément"
          when 72 then faceset = "2B", name_enemy = "Koga"
          when 74 then faceset = "2D", name_enemy = "Marion"
          when 85 then faceset = "4A", name_enemy = "Aaron"
          when 86 then faceset = "4B", name_enemy = "Terry"
          when 87 then faceset = "4C", name_enemy = "Adrien"
          when 88 then faceset = "4D", name_enemy = "Lucio"
          when 91 then faceset = "5A", name_enemy = "Anis"
          when 92 then faceset = "5B", name_enemy = "Percila"
          when 93 then faceset = "5C", name_enemy = "Pieris"
          when 94 then faceset = "5D", name_enemy = "Kunz"
          end
          name_enemy = ""
        when 95 # Maître Red
          vs_bar_picture = "XA"
          faceset = "Hero1"
          name_enemy = "Red"
        when 96 # Maître Peter
          vs_bar_picture = "XB"
          faceset = "2E"
          name_enemy = "Peter"
        when 97 # Maître Steven
          vs_bar_picture = "XC"
          faceset = "3E"
          name_enemy = "Steven"
        when 98 # Maître Cynthia
          vs_bar_picture = "XD"
          faceset = "4E"
          name_enemy = "Cynthia"
        when 99 # Maître Goyah
          vs_bar_picture = "XE"
          faceset = "5E"
          name_enemy = "Goyah"
        end
        @vs_bar_enemy = Sprite.new
        @vs_bar_enemy.bitmap = RPG::Cache.picture(string_vsbar + vs_bar_picture + ".png")
        @vs_bar_actor = Sprite.new
        @vs_bar_actor.bitmap = RPG::Cache.picture(string_vsbar + vs_bar_picture + ".png")
        @faceset_enemy = Sprite.new
        @faceset_enemy.bitmap = RPG::Cache.picture(string_vsbar + faceset + ".png")
        @faceset_actor = Sprite.new
        if $game_variables[0025] == 1
          @faceset_actor.bitmap = RPG::Cache.picture(string_vsbar + "HeroXb.png")
        else
          @faceset_actor.bitmap = RPG::Cache.picture(string_vsbar + "HeroXa.png")
        end
        @screen_vs_bar = Viewport.new(0,0,640,480)
        self.contents.font.name = $fontsmall
        self.contents.font.size = $fontsmallsize
        case $game_variables[0012]
        when 1..8 # Champions officiels # Animation à 2 barres
        when 9 # Rival # Animation choc
          @screen_vs_bar.z = 1
          @screen_vs_bar.flash(Color.new(255,255,255,255),5)
          @screen_vs_bar.tone = Tone.new(64,64,64,0)
          wait(5)
          Graphics.update
          @vs_bar_enemy.x = 640
          @vs_bar_enemy.y = 112
          @vs_bar_enemy.z = 2
          loop do
            @vs_bar_enemy.x -= 10
            Graphics.update
            if @vs_bar_enemy.x <= -640
              break
            end
          end
          @faceset_enemy.x = 640
          @faceset_enemy.y = 112
          @faceset_enemy.z = 3
          @faceset_enemy.zoom_x = @faceset_enemy.zoom_y = 2.0
          @faceset_enemy.color = Color.new(64,64,64,128)
          @faceset_actor.x = -128
          @faceset_actor.y = 112
          @faceset_actor.z = 3
          @faceset_actor.zoom_x = @faceset_actor.zoom_y = 2.0
          @faceset_actor.color = Color.new(64,64,64,128)
          loop do
            Graphics.update
            @vs_bar_enemy.x -= 10
            @faceset_enemy.x -= 10
            @faceset_actor.x += 10
            if @faceset_enemy.x <= 640 - 128 and @faceset_actor >= 0
              @faceset_enemy.x = 640 - 128
              @faceset_actor.x = 0
            end
            if @vs_bar_enemy.x <= -1280
              break
            end
          end
          @screen_vs_bar.z = 100
          @screen_vs_bar.flash(Color.new(255,255,255,255),5)
          @screen_vs_bar.z = 1
          @faceset_enemy.color = @faceset_actor.color = Color.new(255,255,255,0)
          draw_text_vs(2,112+128+2, 200, 32, Player.name, 0)
          draw_text_vs(440,112+128+2, 200, 32, name_enemy, 2)
          Graphics.update
          timer = 64
          @screen_vs_bar.animation(700, true)
          loop do
            Graphics.update
            @vs_bar_enemy.x -= 10
            timer -= 1
            if timer <= 0
              break
            end
          end
          
        when 10 # N # Animation éclair
        when 11..58 # Champions non-officiels # Animation champion
        when 61..94 # Conseil 4 non-officiel # Animation conseil 4
        when 95..99 # Maîtres # Animation maître
        end
        @screen_vs_bar.dispose
        @faceset_enemy.dispose
        @faceset_actor.dispose
        @vs_bar_enemy.dispose
        @vs_bar_actor.dispose
    end #def vs_bar
    
    def draw_text_vs(x, y, w, h, text, align = 0)
      self.contents.draw_text(x,y+2, w, h, text, align, Color.new(64,64,64,255),0)
      self.contents.draw_text(x+2,y+2, w, h, text, align, Color.new(64,64,64,255),0)
      self.contents.draw_text(x+2,y, w, h, text, align, Color.new(64,64,64,255),0)
      self.contents.draw_text(x,y+2, w, h, text, align, Color.new(255,255,255,255),0)
    end #def draw_text_vs
      
      
  end #class
end #module
















@screen_vs_bar est un Viewport
@faceset_enemy et @faceset_actor désignent les facesets de l'adversaire et de son challenger.
@vs_bar_enemy et @vs_bar_actor désignent leurs VS Bars respectives, si elles sont sollicitées.
name_enemy est le nom de l'adversaire sans sa fonction (ex: "Pierre" à la place de "Champion Pierre")
La variable 0011 réfère au type de combat
La variable 0012, lors d'un combat spécial, modifie les sprites impliqués dans la VS Bar.


Pour appeler ce script, j'ai inséré dans Pokemon_Battle_Trainer (autour de la ligne 200)  :
Script Pokemon_Battle_Trainer

Code:
    #------------------------------------------------------------  
    # Animations pré-combat
    #------------------------------------------------------------  
    def pre_battle_transition
      # BGM
      $game_system.bgm_play($game_system.battle_bgm)


      # Sélection transition
      case $game_variables[0011]
      when 0
        Graphics.freeze
        s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      when 1
        Graphics.freeze
        s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      when 2
        Graphics.freeze
        s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      when 3
        Graphics.freeze
        s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      when 4
        Graphics.freeze
        s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      when 5
        Graphics.freeze
        s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      when 6
        vs_bar
      end
      wait(20)
      
      Audio.se_play("Audio/SE/Entrée en Combat.mp3")
      Audio.me_stop
      








Mais rien n'y fait, aucune réaction... 
Aucune erreur n'est déclenchée (heureusement !) et donc, n'espérez pas obtenir de log.


En attendant des réponses de votre part, je vous dis 'à bientôt' !


PS : les noms de Dresseurs mentionnés sont placés en tant qu'exemples. Qui sait s'ils feront partie intégrante de mon projet...)