Des transitions explosives
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.
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.
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.
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
- BlockadeMembre
- Nombre de messages : 194
Age : 32
Distinction : aucune
Date d'inscription : 06/09/2008
Re: Des transitions explosives
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 !
Flemmard Tiens la voici :
Note : Un screen n'est pas représentatif, il faut voir l'effet IG =)
Merci en tout cas !
Quelqu'un peut faire une capture d'écran ? Je ne peux pas chez moi. Merci
Flemmard Tiens la voici :
- 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 =)
Re: Des transitions explosives
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 !
Merci pour le screenshot !
- InvitéInvité
Re: Des transitions explosives
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
J'ajoute à la rubrique des scripts si ce n'est déjà fait ^^
J'avais essayé de trouvé une transition comme ça il y a pas mal de temps
J'ajoute à la rubrique des scripts si ce n'est déjà fait ^^
- Black'Membre
- Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010
Re: Des transitions explosives
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,
Merci du partage,
- Shadow of LifeMembre
- Nombre de messages : 870
Age : 28
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
Re: Des transitions explosives
Sam 4 Sep 2010 - 11:13
Il a l'air sympa ...
Vraiment sympa ...
Je testerais un jour.
Merci du partage Berka.
Voila, voila.
Vraiment sympa ...
Je testerais un jour.
Merci du partage Berka.
Voila, voila.
- Dudu'Staffeux retraité
- Nombre de messages : 2060
Age : 33
Distinction : Apprenti KGB-boy en avenir
[Coco' ]
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
Re: Des transitions explosives
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é...
mais bon tout comme blockade je peux pas dire grand choses je comprend pas tout à comment il à été codé...
- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(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' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
Re: Des transitions explosives
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.
- PharazonStaffeux retraité
- Nombre de messages : 1701
Age : 38
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' ]
Date d'inscription : 14/04/2010
Re: Des transitions explosives
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 ?
en fait, ça permet de créer une transition lors de l'ouverture et fermeture du menu, c'est ça ?
- Azuma-01Membre
- Nombre de messages : 94
Age : 32
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009
Re: Des transitions explosives
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"
une fois décortiqué il est plutôt simple
Alors en voici une version "dé-compilé", avec un correctif et de petits ajouts de mon crû
Have fun
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
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
Re: Des transitions explosives
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 :
Ce qui change fondamentalement tout le script et te permet de mettre ton nom dans les crédits.
Habile
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-01Membre
- Nombre de messages : 94
Age : 32
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009
Re: Des transitions explosives
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.
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.
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)Breka a écrit:[...]je trouvais cela parfaitement logique de le mettre.
- Azuma-01Membre
- Nombre de messages : 94
Age : 32
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009
Re: Des transitions explosives
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
Bref la même chose avec 2-3 ajouts et un "bug" en moins.
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)
- Code:
explose(scene, nb_carreaux_x, nb_carreaux_y)
Bref la même chose avec 2-3 ajouts et un "bug" en moins.
Re: Des transitions explosives
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 ?
Je ne vois toujours pas le bug.
A partir d'un moment, il faut scripter soi-même, tu sais ?
- Azuma-01Membre
- Nombre de messages : 94
Age : 32
Localisation : Amos
Distinction : aucune
Date d'inscription : 22/09/2009
Re: Des transitions explosives
Ven 10 Déc 2010 - 18:54
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.Berka a écrit:A partir d'un moment, il faut scripter soi-même, tu sais ?
:dehors:
Re: Des transitions explosives
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.
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.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum