Mo_on
Faut prendre des scripts externes, sinon tu peux rien faire (sauf opérations de base : couleur, variables, etc)
![]()
Merci Phantom! Juste deux trois questions:
-Je n´ai jamais crée de script de ma vie, j´aurai peut-être besoin d´un peu d´aide, les trucs qu´il faut mettre dedans etc. Je dois faire un nouveau script ou modifier un qui existe déja?
-Le fade, je veux le faire comme dans Castlevania II, pour garder l´esprit, c´est à dire dès qu´il est l´heure de la nuit, fade complet en noir, puis re-fade en gris (nuit) et pareil pour le jour.
Script, c´est facile :
Soit c´est noté d´où tu l´as copié qu´il faut remplacer, soit de faire un nouveau.
Si tu te rappelles plus comment faire, affiche-le ici, et je verrais bien.
Pour imiter Castlevania II, c´est finalement plus simple : Dans la section de contrôle de temps_jeu, où tu réinitialisais la variable si elle était plus grande que 3600, tu modifies l´évent pour avoir ça :
Page 1 (pas de condition),parallèle ![]()
Si (temps_jeu==-1): fade-in;
temps_jeu + 1;
attendre 100 frames;
Page 2 (temps_jeu > 3600),automatique ![]()
fade_out;
temps_jeu = -1;
téléportation sur la carte de la nuit/jour au même endroit (par exemple, tu stockes les positions du héros dans deux variables);
![]()
J´ai encore rien compris... ![]()
-C´est quoi pour toi "la section de contrôle de temps_jeu"?
-De quelle variable parles-tu?(je n´en ai utilisé aucune)
-Tu veux que j´utilise un event en parallel process?Common event ou event sur la map?
-Il n´y a pas un moyen de faire ca sans faire deux maps séparés jour et nuit?
Merci et désolé si je peine a comprendre...
Y a un moyen de faire sans distinction de maps, mais ça complique beaucoup...
Si tu veux que ton event s´ayant chargé de ça (t´avais dit que tu en avais fait sur toutes les maps) ne recommence pas aux changements de maps, faut prendre des valeurs hors-maps : des variables.
Pour ceci, crée une variable que tu nommeras "temps_jeu", qui se chargera de compter les secondes.
Sortir les common events aura été utile : j´avais complètement oublié cette possibilité-là.
Alors ça devient plus court : tu crées un common event, qui s´active par switch (que tu actives dès le début du jeu), où tu mets dedans
1. Condition :
Si temps_jeu égal à 3600 : mets temps_jeu à -1
Sinon : rien
2. Attendre 100 frames
3. Ajoute 1 à temps_jeu
P.S : Il serait aussi préférable de fixer temps_jeu à -1 au début du jeu (juste avant d´activer le switch pour l´évènement commun)
La section de contrôle serait ça...
![]()
Salutations créateurs en herbe
J´ai 2 questions dont je ne trouve pas la réponse.
1) Connaîtriez-vous une méthode pour que le héro bouge ( ou exécute une animation ) lorsqu´il ne bouge pas ?
2) Connaîtriez-vous un script permettant un effet d´ondulation de l´écran ?
Merci d´avance ![]()
salut les maker je suis de retour (je sais je vous ai manqué ^^)
mo_on :
1) tu fait un évent :
modifer/déplacer un évent : le héro : animé à l´arret :on
2)heu ... conait po ... mais tu peu toujours faire "trembler l´écran" en continu ...
et amis maker, pensez vous que je doit vous présenter mon projet (véritable raison de mon abscence) ?? ^^
Mo_on:
Oui, il existe bel et bien un script qui fait ce que tu demande. Mais je ne sais plus où. Par conséquent ===> Google est ton ami.
alexsky_fp:
Crée un nouveau topic si tu veux présenter ton projet.
je ne pense pas qu´avec google il va trouver un script en ruby ... c trop vaste ... il ferai mieu de chercher sur les bons sites rpg makers ... comme rpgcréative ..
et je sais comment ça marche chui pas un nouveau ... XD ! mais pour feter mon retour, je pense que je vais le mettre ...
J´ai, une fois, trouvé un script permettant l´effet d´ondulation.
Malheureusement, il ne fonctionnait pas ![]()
bah c peut etre une simple erreur a corriger ça ^^
Le seul script dont j´ai connaissance, faisant mention d´une ondulation est celui-ci :
class Image_onde_xy
attr_accessor :x
attr_accessor:y
attr_accessor :op
attr_accessor:ampl
attr_accessor:puls
attr_accessor:angle
attr_accessor:blend
attr_accessor:img, :va ,:t
def initialize(x,y,nom,ampl=40,puls=4,pas=3,blend=0)
@t=0
@pas=pas
@ampl=ampl
@puls=puls
@op=255
@angle=0
@blend=blend
@va=0
@x=x
@y=y
@nom=nom
if nom .is_a?(String)
@bitsav = RPG::Cache.picture(@nom)
@img=Sprite.new
@img.bitmap=RPG::Cache.picture(@nom)
else
@bitsav = nom
@img=Sprite.new
@img.bitmap=nom
end
@img.blend_type=@blend
@img.opacity=0
super()
maj
end
def dispose
@img.bitmap.dispose
end
def maj
@t+=1
@img.opacity=@op
if @nom .is_a?(String)
@bitsav = RPG::Cache.picture(@nom)
@img.bitmap=RPG::Cache.picture(@nom)
else
@bitsav = @nom
@img.bitmap=@nom
end
@img.x =@x
@img.y =@y
@img.z=100
if @nom .is_a?(String)
@img.bitmap=RPG::Cache.picture(@nom)
else
@img.bitmap=@nom
end
@img.ox = @img.bitmap.width / 2
@img.oy = @img.bitmap.height / 2
@img.z=55
w=@img.bitmap.width
h=@img.bitmap.height
pas=@pas
ampl=@ampl
puls=@puls
puls=puls.to_f
pas=pas.to_f
rect=[]
max=(w/pas)
for i in 0..max
rect[i]=Rect.new(i*pas,0, pas,h)
end
@img.bitmap=Bitmap.new(w,h+2*ampl)
@img.y-=ampl
for i in 0..max
@img.bitmap.blt(i*pas,ampl*(1+Math.sin((@t-i)/(pul
s*pas))),@bitsav, rect[i])
end
@bitsav=@img.bitmap
w=@img.bitmap.width
h=@img.bitmap.height
rect=[]
max=(h/pas)
for i in 0..max
rect[i]=Rect.new(0,i*pas, w, pas)
end
@img.bitmap=Bitmap.new(w+2*ampl,h)
@img.x-=ampl
for i in 0..max
@img.bitmap.blt(ampl*(1+Math.sin((@t-i)/(puls*pas)
)),i*pas,@bitsav, rect[i])
end
end
end
$imgonde=Image_onde_xy.new(position_x,position_y,"
nom de l´image sans l´extension mais entre guillemets")
reste un truc à faire: mettre à jour l´image chaque seconde.
if $imgonde.is_a?(Image_onde_x) or $imgonde.is_a?(Image_onde_y) or $imgonde.is_a?(Image_onde_xy)
$imgonde.maj
end
end
Soit vous mettez ça dans un event en processus parallèle sur votre carte, soit dans Scene_map, dans la fonction update, juste en dessous du "loop do".
Lien :
Sous cette forme, c´est plus lisible :
http://www.rpg-maker.fr/index.php?page=scripts&id=8&Oniro_forum=f7bad4affbfcf0160f86b71a077362c7
Je pense qu´il voulait faire onduler tout l´ecran d´un coup. C´est possible aussi, mais pas avec ce script.
Effectivement, j´aimerais faire onduler l´écran, cela me servirait beaucoup ![]()
Des scripts par ci, des scripts par là... Pourquoi pas une commande event ? ("faire onduler l´écran...")
![]()
Cette commande existait peut-etre sur rm03, mais tout ce qu´on peut trouver sur rmxp est la commande "faire trembler l´ecran". Ce qui n´a sensiblement pas le même effet.
Effectivement, la commande "faire onduler l´écran" n´existe pas sur RPGM XP ![]()
Faut récupérer la surface affichée à l´écran et faire gaffe que ce soit pas récursif sur la sortie de l´écran.
En gros, on récupère la sortie de l´écran (il me semble que les coordonnées sont standard 0,0 en haut à gauche), on additionne a*sin(t) à chaque rangée, genre, faire une fonction avec ´$ecran´ les données récupérées de l´écran en tableau, ´a´ l´intensité et ´t´ la longueur :
def onduler(a,t)
x=0
for i in $ecran
i.reverse!
i+=[[0,0,0]]*(a*Math.sin(x*t)).to_i
i.reverse!
i+=[[0,0,0]]*(a*Math.cos(x*t)).to_i
x+=1
end
end
end
Je connais pas le type de données retournées de l´écran, mais je sais que c´est des surfaces ; je pencherais pour des strings à 32 bits. Dans ce cas, tu changerais les [0,0,0] en string binaire avec la méthode pour arrays .pack(mode) où mode serait selon ça :
http://rubycentral.com/ref/ref_c_array.html#pack
Tu utiliserais cette fonction dans la classe d´affichage, au moyen d´une boucle avec t et modulos, juste avant Graphics.update
![]()
Merci de t´être donné la peine de me répondre, merci beaucoup
Néanmoins, j´avoue ne pas avoir tout compris
Faisais-tu suite au script posté juste avant ou bien est-ce une autre méthode ?