Partagez
Aller en bas
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Des transitions explosives Empty Des transitions explosives

le Sam 4 Sep 2010 - 0:02
Bonsoir à tous !
Voici un nouveau script. Pas si nouveau que ca, car il a 4 ans. Il a été codé par Sunmat pour XP. Ce n'est qu'aujourd'hui que j'ai eu l'idée de vous faire partager ce super script en l'adaptant pour rgss2.
Ma contribution est très succincte car tout le boulot a été fait par Sunmat (calculs, idée...). Moi je n'ai fait que supprimer la capture d'écran par dll en utilisant les nouvelles fonctionnalités de rgss2.
Des transitions explosives 11347978448664_temp1
Merci Blockade le screen

Voila la bête, à placer juste au dessus de main, en dessous de toutes les autres scènes. Ne mettez pas trop de morceaux car le calcul devient très vite super long.

Code:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#                                                    Transition explosive
#    Auteur: Sunmat
#    Porté sur RMVX etoptimisé par Berka                                                rgss2
#--------------------------------------------------------------------------------------------------------------
#    Utilisation
#  Dans l'appel de la scène vers laquelle vous voulez faire une transition, faite:
#  explose(la scene, nb carreaux x, nb carreaux y)
# ex: explose(Scene_Menu, 12, 8)
#  Les deux derniers paramètres sont optionnels (par défaut: 12, 8)
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
class D_Explosion
  attr_accessor :rs,:gr,:vx,:vy
  def initialize;@rs,@gr,@vx,@vy=(100-rand(50))/50,0.1,10-rand(20),-rand(10);end
  def update;@vy+=@gr;end
end
def explose(scene,x=12,y=8);$scene=Explosion.new(scene,x,y);end
class Explosion<Scene_Base
  def initialize(ns,nx,ny)
    ew,eh,@ns,@over=Graphics.width,Graphics.height,ns,false
    @nx,@ny,@bm=nx,ny,Graphics.snap_to_bitmap
    RPG::BGM.stop;RPG::ME.stop;RPG::BGS.stop
    @sp,@ex,bbuf=[],[],Bitmap.new((ew/@nx),(eh/@ny))
    (@nx=nx).times{|i|@sp[i],@ex[i]=[] ,[]
      (@ny=ny).times{|j|(@sp[i][j]=Sprite.new).z=9999
        @sp[i][j].x,@sp[i][j].y,@sp[i][j].bitmap=i*(ew/@nx),j*(eh/@ny),bbuf.clone
        @sp[i][j].bitmap.blt(0,0,@bm,Rect.new(i*(ew/@nx),j*(eh/@ny),(ew/@nx),(eh/@ny)))
        @ex[i][j]=D_Explosion.new}}
    Graphics.freeze
  end
  def main
    Graphics.transition(0.01)
    ($scene=@ns.new).start
    loop do
      Graphics.update       
      Input.update               
      update                   
      break if @over
    end
    @nx.times{|i|@ny.times{|j|@sp[i][j].dispose rescue nil}}
  end
  def update
    @st=false
    @nx.times{|i|
      @ny.times{|j|
        if !(@sp[i][j].disposed?)&&@sp[i][j].y<500
          @st=true
          @sp[i][j].angle+=@ex[i][j].rs
          @sp[i][j].x+=@ex[i][j].vx;@sp[i][j].y+=@ex[i][j].vy
          @ex[i][j].update;@sp[i][j].update
        elsif !(@sp[i][j].disposed?)
          @sp[i][j].dispose
        end}}
    @over=true if !(@st)||Input.trigger?(Input::C)||Input.trigger?(Input::B)
  end
  def terminate;end
end



Dernière édition par Berka le Sam 4 Sep 2010 - 12:00, édité 3 fois
Blockade
Blockade
Membre

Nombre de messages : 194
Age : 27
Distinction : aucune
Date d'inscription : 06/09/2008

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 0:35
Yep ca rend bien =) Bon je pourrais pas donner mon avis sur le script vu que je comprend pas comment il marche m'enfin ^^'
Merci en tout cas !

Quelqu'un peut faire une capture d'écran ? Je ne peux pas chez moi. Merci

Flemmard Smile Tiens la voici :
Des transitions explosives 11347978448664_temp1

Code:
[url=http://s2.noelshack.com/upload/11347978448664_temp1.png][img]http://s2.noelshack.com/uploads/images/11347978448664_temp1.png[/img][/url]

Note : Un screen n'est pas représentatif, il faut voir l'effet IG =)
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 1:46
Oui, j'assume, je suis une grosse feignasse. Mais vu que j'ai pas de touche imprécran sur mon ordi, c'est beaucoup trop compliqué d'ouvrir Capture.
Merci pour le screenshot !
Anonymous
Invité
Invité

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 9:06
Merci beaucoup pour le partage Berka !
J'avais essayé de trouvé une transition comme ça il y a pas mal de temps Smile
J'ajoute à la rubrique des scripts si ce n'est déjà fait ^^
Black'
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 10:27
Excellent ce script !! Il y en avait un de défaillant sur une autre commu' mais celui-ci fonctionne !

Merci du partage,
Shadow of Life
Shadow of Life
Membre

Nombre de messages : 870
Age : 22
Localisation : Joyeux. Comment ça c'est pas la bonne case ?
Distinction : Artiste de la flagornerie.
Porte parole du Ô grand Voilà voilà.
Président du club des masochistes du forum
Fake Gentleman

Soumis ^^
Date d'inscription : 13/09/2009

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 11:13
Il a l'air sympa ...
Vraiment sympa ...
Je testerais un jour.
Merci du partage Berka.
Voila, voila.
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 28
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 11:42
très joli berber'
mais bon tout comme blockade je peux pas dire grand choses je comprend pas tout à comment il à été codé...
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 22:47
Bon je pourrais pas donner mon avis sur le script vu que je comprend pas comment il marche m'enfin ^^'

mais bon tout comme blockade je peux pas dire grand choses je comprend pas tout à comment il à été codé

Pareil ^^ mais sinon ça a un très jolie rendu.
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Des transitions explosives 522164]
Date d'inscription : 14/04/2010

Des transitions explosives Empty Re: Des transitions explosives

le Sam 4 Sep 2010 - 22:58
J'ai pas très bien compris, et vu que j'ai la flemme de tester^^


en fait, ça permet de créer une transition lors de l'ouverture et fermeture du menu, c'est ça ?
Azuma-01
Azuma-01
Membre

Nombre de messages : 94
Age : 27
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009

Des transitions explosives Empty Re: Des transitions explosives

le Jeu 9 Déc 2010 - 17:57
Malgré que se sois un nécro-post je dois avouer que c'est une belle trouvaille.
Par contre, pour pardonner ma faute, j'y ai trouver un bug subtil, mais qui a son importance : $scene.start est appelé 2 fois!
- la première par ce script "($scene = @ns.new).start"
- la deuxième fois par la boucle la plus importante du système "$Scene.main while $scene != nil"

@Blockade a écrit:Bon je pourrais pas donner mon avis sur le script vu que je comprend pas comment il marche m'enfin ^^'
Adurna a écrit:mais bon tout comme blockade je peux pas dire grand choses je comprend pas tout à comment il à été codé
@Skillo a écrit:Pareil ^^ mais sinon ça a un très jolie rendu.

une fois décortiqué il est plutôt simple study

Alors en voici une version "dé-compilé", avec un correctif et de petits ajouts de mon crû
Code:
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#                                                    Transition explosive
#    Auteur: Sunmat
#    Porté sur RMVX et optimisé par Berka                                                rgss2
#    Ajout d'un module de personnalisation et correction d'une double appelle de $scene.strat par Azuma-01
#--------------------------------------------------------------------------------------------------------------
#    Utilisation
#  Dans l'appel de la scène vers laquelle vous voulez faire une transition, faite:
#  explose(la scene, nb carreaux x, nb carreaux y, effet inverse, accélération)
# ex: explose(Scene_Menu, 12, 8, false, 0.5)
#  Les quatre derniers paramètres sont optionnels (par défaut: 12, 8, EXplosion::Reverse, EXplosion::AG)
#  EXplosion::Reverse et  EXplosion::AG sont des valeurs définie si dessous
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
module EXplosion
  #accélération  (0.1 par défaut) {utiliser comme valeur par défaut}
  AG = 0.1                    # plus le nombre est gros, plus c'est vite!
  # inverser l'animation de haut en bas {utiliser comme valeur par défaut}
  Reverse = false        # true / false
  # distance parcouru hors de l'écran
  Out_Range = 50
end


class D_Explosion
  attr_accessor :rs,:gr,:vx,:vy
  # rs => indice de rotation
  # gr => accélération
  # vx => déplacement en x par frame
  # vy => déplacement en y par frames
  def initialize(speed,reverse)
    @rs, @gr, @vx = (100-rand(50))/50, speed, 10-rand(20)
    @vy =  reverse ? rand(10) : -rand(10)
    @reverse = reverse
  end
  def update; @reverse ? @vy-=@gr : @vy+=@gr; end
  end
 
def explose(scene,x=12,y=8,reverse=EXplosion::Reverse,speed=EXplosion::AG);$scene=Explosion.new(scene,x,y, speed,reverse);end
 
class Explosion<Scene_Base
  def initialize(ns,nx,ny, speed, reverse)
    screen_width, screen_height = Graphics.width, Graphics.height
    @next_scene = ns
    @over = false
    @nx,@ny = nx,ny
    @reverse = reverse
    @screen = Graphics.snap_to_bitmap
    RPG::BGM.stop;RPG::ME.stop;RPG::BGS.stop
    @sprites,@ex = [],[]
    block_width, block_height = (screen_width/@nx),(screen_height/@ny)
    bbuf = Bitmap.new(block_width, block_height)
    @nx.times{|i| @sprites[i],@ex[i]=[], []
      @ny.times{|j| (@sprites[i][j]=Sprite.new).z=9999
        # positionnement du bloc
        @sprites[i][j].x = i*block_width
        @sprites[i][j].y = j*block_height
        # création du bloc
        @sprites[i][j].bitmap = bbuf.clone
        @sprites[i][j].bitmap.blt(0, 0, @screen, Rect.new(i*block_width, j*block_height, block_width, block_height))
        # création des paramètres du bloc (± unique)
        @ex[i][j] = D_Explosion.new(speed, reverse)
      }
    }
    Graphics.freeze
  end
 
  def main
    Graphics.transition(0.01)
    ($scene=@next_scene.new).start
    loop do
      Graphics.update     
      Input.update             
      update                 
      break if @over
    end
    terminate
    #$hadExplode = true
  end
 
  def update
    @stop=false
    @nx.times{|i|
      @ny.times{|j|
        if !(@sprites[i][j].disposed?)&&(@reverse ? @sprites[i][j].y>0 - EXplosion::Out_Range : @sprites[i][j].y< Graphics.height+EXplosion::Out_Range)
          # bouger la pièce
          @stop=true
          @sprites[i][j].angle+=@ex[i][j].rs
          @sprites[i][j].x += @ex[i][j].vx
          @sprites[i][j].y+=@ex[i][j].vy
          @ex[i][j].update;@sprites[i][j].update
        elsif !(@sprites[i][j].disposed?)
          @sprites[i][j].dispose
        end
      }
    }
    @over=true if !(@stop)||Input.trigger?(Input::C)||Input.trigger?(Input::B)
  end
 
  def terminate;
    @nx.times{|i|@ny.times{|j|@sprites[i][j].dispose rescue nil}}
    $scene.terminate
  end
end
 

Have fun Des transitions explosives 522164
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Des transitions explosives Empty Re: Des transitions explosives

le Jeu 9 Déc 2010 - 20:11
Et tu as noté une erreur de fonctionnement avant de corriger ce "bug" ?
Parce que je trouvais cela parfaitement logique de le mettre. Sinon je ne l'aurais pas mis, tout simplement.

En tout cas, merci d'avoir relevé ce "bug" et pour ta brillante correction. Tu passes de :
Code:

@ns = ns
# ...
($scene=@ns.new).start
à
Code:

@next_scene = ns
# ...
($scene=@next_scene.new).start

Ce qui change fondamentalement tout le script et te permet de mettre ton nom dans les crédits.
Habile
Azuma-01
Azuma-01
Membre

Nombre de messages : 94
Age : 27
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009

Des transitions explosives Empty Re: Des transitions explosives

le Ven 10 Déc 2010 - 14:33
Non, coté fonctionnalité je n'est rien vue de défaillant. En fait j'ai découvert cette double appelle en testant l'animation lors du transfère de Scene_Map vers Scene_Menu. En retournant au jeux j'étais resté pris avec la Window_Command... Et ensuite, vous connaissez la suite.

Sinon si j'ai changé les variables de nom ce n'était pas tant pour m'inscrire dans les crédits que pour me rappeler qui était quoi.

Breka a écrit:[...]je trouvais cela parfaitement logique de le mettre.
En effet il est pertinent de le faire sinon on explose sur une écran noir et ensuite la nouvelle scène construite. (pas très jolie)
avatar
Az'
Membre

Nombre de messages : 3318
Age : 74
Date d'inscription : 22/12/2007

Des transitions explosives Empty Re: Des transitions explosives

le Ven 10 Déc 2010 - 15:06
Hmm... Ma question est peut être un peu déplacé, mais aux-aiffes.
Concrètement donc, en fait, tu y as apporté quoi, au code de Berka?

C'est pas vraiment explicite (faut dire, j'ai un peu de mal aujourd'hui, m'enfin), et à part une variable qui change de nom pour l'instant, j'vois pas tellement le changement.
Et puis, j'ai la flemme de tester donc bon...
Azuma-01
Azuma-01
Membre

Nombre de messages : 94
Age : 27
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009

Des transitions explosives Empty Re: Des transitions explosives

le Ven 10 Déc 2010 - 15:21
Le plus gros morceau est "$scene.terminate" dans la méthode treminate et en second une possibilité d'altérer l'animation du point vitesse et sens.
les valeurs par défaut via le module et au cas par cas via l'appelle
Code:
explose(scene, nb_carreaux_x, nb_carreaux_y, effet_inverse?, accélération)
ex : explose(Scene_Menu, 12, 8, true, 0.8)
Appelle qui était au départ:
Code:
explose(scene, nb_carreaux_x, nb_carreaux_y)

Bref la même chose avec 2-3 ajouts et un "bug" en moins.
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Des transitions explosives Empty Re: Des transitions explosives

le Ven 10 Déc 2010 - 17:13
Soit.
Je ne vois toujours pas le bug.
A partir d'un moment, il faut scripter soi-même, tu sais ?
Azuma-01
Azuma-01
Membre

Nombre de messages : 94
Age : 27
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009

Des transitions explosives Empty Re: Des transitions explosives

le Ven 10 Déc 2010 - 18:54
@Berka a écrit:A partir d'un moment, il faut scripter soi-même, tu sais ?
je sais très bien faire par moi-même, je me suis seulement jamais donné la peine de les publier. Certes, faire des bug-fix et des menus c'est de la petite bière, mais on peut toujours se crée systèmes supplémentaire ou utiliser Fox-Ruby pour faire changement.
:dehors:
Berka
Berka
Administrateur

Nombre de messages : 1832
Age : 28
Localisation : Paris
Distinction : rubyste déglingué
9ème dan en scripting-no-jutsu

Nouveau Justine Beber ;P
Date d'inscription : 16/12/2007
http://rpgruby.olympe-network.com

Des transitions explosives Empty Re: Des transitions explosives

le Ven 10 Déc 2010 - 20:05
C'est bien. Mais ici, personne n'a rien à prouver.

Donc tes progs FxRuby, c'est bien. Mais rien ne me dit que tu sais aller plus loin que le HelloWorld de la Doc. Mais vu que tu as l'air d'un petit génie, je suis sur que tu vas nous montrer tes supers codes.
Contenu sponsorisé

Des transitions explosives Empty Re: Des transitions explosives

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum