Partagez
Aller en bas
KelArtiste
KelArtiste
Membre

Nombre de messages : 20
Localisation : Caché dans le placard de Yanfly
Distinction : aucune
Date d'inscription : 25/12/2018

RPG Maker VX Ace Script Vx Ace : Battlers ennemis animés

le Dim 31 Mar 2019 - 18:18
Salut à tous ! Alors voilà, je suis à la recherche d'un script me permettant d'animer les Battlers ennemis, je parle des images format PNG qu'on trouve dans le dossier Graphics/Battlers. J'aimerais animer les ennemis de mon projet sur quelques frames, pour donner un résultat à la Shin Megami Tensei, si vous voyez un peu le délire. Pas forcément des animations de ouf, simplement une posture debout animée, comme une respiration ou un mouvement de tête/de buste.

Exemple de ce que je cherche à 1m45 :



"Oulà, qu'est-ce que tu nous racontes, kéké, t'es tombé sur la tête ? On est sur RPG maker, pas Unity."

Alors premièrement, oui, je suis tombé sur la tête, mais là n'est pas le sujet, cher interlocuteur fictif. Il se trouve qu'un script existant, conçu par jmoresca et DrDhoom, permet d'animer les arrières-plans des combats sur quelques frames en utilisant simplement des images dans le dossier Graphics. J'ai testé, ça marche parfaitement. Du coup, si on se base sur le même genre de programmation, ça doit bien être possible d'animer les ennemis de la même façon non ? Enfin, je suis une brêle en prog donc je parle juste en théorie...
J'ai parcouru les librairies de Hime, de Kread-Ex, de Yanfly et NeonBlack, j'ai même réussi à retrouver les archives de Mr.Bubbles, mais j'ai jamais pu mettre la main sur un tel script. Existe-t-il seulement ? Si vous avez la moindre idée, le moindre indice, je suis preneur.

Et si vous êtes calé en programmation et qu'un tel script est dans vos cordes... Je ne vous serai jamais assez reconnaissant de me prêter main forte. Ce n'est pas grand chose et ça ne changera en rien le gameplay de mon projet, mais étant moi même illustrateur et ayant quelques bases en animation, je me dis que ce serait un super moyen de mettre en oeuvre mon talent.

Si jamais ça vous aide, je mets à disposition le script d'animation des Battlebacks ci-dessous.

Spoiler:

Code:
#===========================================================================
# Animated Battlebacks (VX)
#   by jmoresca
#   July 18,2009
#
# Ported to RMVXA
#   by DrDhoom
#   May 20, 2013
#===========================================================================
#
# How to use:
#    Just configure the AnimBB module
#
# FAQ's
#    How to set the Animated Battlebacks?
#       Save your set of images like this : <name of battle back><anim no>
#       Example:
#          if you have a BattleBack named "sample_bb" then
#          image set will be: sample_bb1, sample_bb2, sample_bb3  
#
#    How to set Animation Speed?
#       edit FRAMES_PER_UPDATE or you can specify a battleback on UPDATE_PER_BB
#
#============================================================================
module AnimBB
  FRAMES_PER_UPDATE = 20 #Adjust the speed here. [The lower the faster]
  UPDATE_PER_BB = {"Clouds"=>40,"desert_0"=>22, "mansion_0"=>6, "gate_0"=>12} #Speed for specific background
end
class Spriteset_Battle
  include AnimBB
  
  def update_battleback1
    if battleback1_name
      @updateBB1_no = @updateBB1_no + 1
      if @count1 != 0
        if UPDATE_PER_BB.include?(@originalBB1)
          if UPDATE_PER_BB[@originalBB1] == @updateBB1_no
            @updateBB1_no = 0
            @frame_no1 = @frame_no1 + 1
            if @frame_no1 > @count1
              @back1_sprite.bitmap = Cache.battleback1(@originalBB1)
              @frame_no1 = 0
            else
              @back1_sprite.bitmap = Cache.battleback1(@originalBB1 + (@frame_no1).to_s)
            end
          end
        else
          if @updateBB1_no == FRAMES_PER_UPDATE
            @updateBB1_no = 0
            @frame_no1 = @frame_no1 + 1
            if @frame_no1 > @count1
              @back1_sprite.bitmap = Cache.battleback1(@originalBB1)
              @frame_no1 = 0
            else
              @back1_sprite.bitmap = Cache.battleback1(@originalBB1 + (@frame_no1).to_s)
            end
          end
        end
      else
        @updateBB1_no = 0
      end
      @back1_sprite.update
    else
      @back1_sprite.update
    end
  end
  
  def update_battleback2
    if battleback2_name
      @updateBB2_no = @updateBB2_no + 1
      if @count2 != 0
        if UPDATE_PER_BB.include?(@originalBB2)
          if UPDATE_PER_BB[@originalBB2] == @updateBB2_no
            @updateBB2_no = 0
            @frame_no2 = @frame_no2 + 1
            if @frame_no2 > @count2
              @back2_sprite.bitmap = Cache.battleback2(@originalBB2)
              @frame_no2 = 0
            else
              @back2_sprite.bitmap = Cache.battleback2(@originalBB2 + (@frame_no2).to_s)
            end
          end
        else
          if @updateBB2_no == FRAMES_PER_UPDATE
            @updateBB2_no = 0
            @frame_no2 = @frame_no2 + 1
            if @frame_no2 > @count2
              @back2_sprite.bitmap = Cache.battleback2(@originalBB2)
              @frame_no2 = 0
            else
              @back2_sprite.bitmap = Cache.battleback2(@originalBB2 + (@frame_no2).to_s)
            end
          end
        end
      else
        @updateBB2_no = 0
      end
      @back2_sprite.update
    else
      @back2_sprite.update
    end
  end

  def create_battleback1
    if battleback1_name
      @originalBB1 = battleback1_name
      @count1 = 0
      @updateBB1_no = 0
      @frame_no1 = 0
      loop do
        begin
          @count1 += 1
          sample = Cache.battleback1(@originalBB1 + @count1.to_s)
        rescue
          @count1 -= 1
          break
        end
      end      
    end
    @back1_sprite = Sprite.new(@viewport1)
    @back1_sprite.bitmap = battleback1_bitmap
    @back1_sprite.z = 0
    center_sprite(@back1_sprite)
  end
  
  def create_battleback2
    if battleback2_name
      @originalBB2 = battleback2_name
      @count2 = 0
      @updateBB2_no = 0
      @frame_no2 = 0
      loop do
        begin
          @count2 = @count2 + 1
          sample = Cache.battleback2(@originalBB2 + @count2.to_s)
        rescue
          @count2 = @count2 - 1
          break
        end
      end      
    end
    @back2_sprite = Sprite.new(@viewport1)
    @back2_sprite.bitmap = battleback2_bitmap
    @back2_sprite.z = 0
    center_sprite(@back2_sprite)
  end
end
Merci d'avance pour votre aide !


Dernière édition par KelArtiste le Dim 14 Avr 2019 - 12:45, édité 1 fois
KelArtiste
KelArtiste
Membre

Nombre de messages : 20
Localisation : Caché dans le placard de Yanfly
Distinction : aucune
Date d'inscription : 25/12/2018

RPG Maker VX Ace Re: Script Vx Ace : Battlers ennemis animés

le Ven 12 Avr 2019 - 17:30
EDIT !
Alors, je me permets un double post pour up un peu le topic dans la liste. Suite à de nombreuses recherches, j'ai appris qu'apparemment, cela demandait moins de ressources d'animer des sprites plutôt que des PNG frame par frame. J'ai donc cherché parmi plusieurs scripts et j'ai trouvé celui-ci : Ce script est très sympa et j'ai pu télécharger une démo.
Néanmoins, mon projet comporte aussi l'excellent Ace Battle Engine de Yanfly, et pour les avoir testés ensemble, les deux scripts me semblent incompatibles. C'est malheureusement ma seule alternative pour avoir des ennemis animés en combat. Y a-t-il une bonne âme douée en RGSS3 qui puisse m'aider à identifier et résoudre le problème pour rendre ces deux scripts compatibles ? Ce serait chouette.

Lien du Ace Battle Engine de Yanfly
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum