Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Sorties: Dread Mac Farlane - episode 6 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

329 connectés actuellement

29366287 visiteurs
depuis l'ouverture

1002730 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Maker VX

New RPG Maker

RPG Fusion

Kingdom Ultimate

Tous nos partenaires

Devenir
partenaire



Messages en spirales

Certains se seront peut etre posés la question du fonctionnement des textes en spirale, en jouant à JVF2, et bien voici la réponse !

Script pour RPG Maker XP
Ecrit par Fabien
Publié par fabien (lui envoyer un message privé)
Signaler un script cassé

❤ 0

Auteur : Fabien
Logiciel : RPG Maker XP
Nombre de scripts : 1

Fonctionnalités
Les messages en spirales sont assez rudimentaires techniquement. Disons que je me suis contenté du minimum syndical pour que ca fonctionne bien. Le code n'est pas très propre ni forcément très facile d'utilisation.

Installation
A placer au-dessus de Main.

Utilisation
Pour afficher du texte en spirale, faites un appel de script et insérez :

Portion de code : Tout sélectionner

1
spirale(texte, délai entre les lettres, x,y)


texte : le texte à afficher.
délai entre les lettres : le temps d'attente entre chaque lettres, en frame.
x et y : les coordonnées d'affichage du texte sur l'écran.

Puis :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Loop (boucle)
for i in 0...$spi.size-1 # appel de script
$spi.maj # appel de script
end
wait 1 frame
 
si touche entrée pressée:
$fermer=true #appel de script
end
si fermer==true # appel de script
if fermer_spirale # condition avec appel de script)
break ( sortir de la boucle)
fin du si
fin du if



Ce n'est qu'un exemple hein, là c'est pour que le texte s'affiche et qu'on puisse le faire partir avec entrée, et que la commance suivante ne s'exécute pas avant que le texte ai disparu.
Pour un exemple réél, reportez vous au code la démo de JVF2 : (la scène 3) ( mais là dedans c'est un poil plus sophistiqué, la maj se trouve dans un truc relié à scène map, MAJ diverses. )

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#Tout d'abord, quelques fonctions utiles.
#dl désigne de délair entre chaque lettre. Si vous le mettez à 0 toutes les lettres arriverons en même temps.
#spirale est a utiliser la plupart du temps. Balancez lui un texte, avec les lignes, et ce sera tout.
def spirale(txt="abcdef",dl=0,x=320,y=200)
$spi=[]
txt+="\n"
u=0
for i in 0..txt.size-1
if txt[i..i]=="\n"
$spi[$spi.size]=Spirale.new(txt[u..i],dl,x,y+34*$spi.size,400,1.05,txt[0..u].size)
u=i
end
end
for i in 0..$spi.size-1
$spi[i].y-=17*$spi.size
end
end
 
#fermer spirale lance l'éloignement des lettres. Attention ce n'est pas instanné ! Lorsque c'est fini, la fonction renvoie true. Mettez donc une boucle qui ne se finit que lorsque fermer_spriale==true
def fermer_spirale
  f=0
  for i in 0..$spi.size-1
$spi[i].fermeture=true
if $spi[i].fin
f+=1
end
end
  if f==$spi.size
$spi=[]
return true
end
end
 
#spiralesp est une variante de spirale qui n'enlève pas le texte précédent. A utiliser pour rajouter un texte après un autre. (je ne l'ai testé que pour une ligne de rajout)
def spiralesp(txt="abcdef",dl=0,x=320,y=200)
txt+="\n"
u=0
for i in 0..txt.size-1
if txt[i..i]=="\n"
$spi[$spi.size]=Spirale.new(txt[u..i],dl,x,y+34*$spi.size)
u=i
end
end
end
 
 
 
 
class Spirale #la classe à proprement parler
  attr_accessor:fermeture
  attr_accessor:fin
  attr_accessor:y
 
  def dispose
  @disposition=true
  end
 
  def initialize(txt="JVF2",dl=0,x=320,y=240,r=400,dr=1.05,dt=0)
   @t=0
   @dl=dl.to_f
   txt2=" "
   txt2+=txt
   txt=txt2
   @fermeture=false
   @rayon=[]
   @lettres=[]
   @dr=dr
   @x=x
   @y=y
   @taille=[]
      for i in 0..txt.size-1
        # Pour ceux qui s'y connaissent, j'ai fait un éssai
        #avec un buffer unique où je drawais les lettres,
        #mais il s'est avéré que celà ramais 300 fois plus !
        #J'ai donc laisse la gestion avec autant de lettres que de sprites.
        #Celà ne rame à priori pas pendant le mouvement, mais une poignée d'instants au chargement
      @rayon[i]=r+(8*(dt+i))**2
      #la ligne ci dessus est l'équation régissant l'écart entre les lettres en fonctions de dl
      @lettres[i]=Sprite.new
      @lettres[i].z=50
      @lettres[i].x=1000
      @lettres[i].y=1000
      @lettres[i].bitmap=Bitmap.new(50,50)
      @lettres[i].bitmap.font.name ="Times New Roman","Arial","Adorable"
      @lettres[i].bitmap.font.size =40
          if $scene.is_a?(Scene_Title) # si vous voulez une police spéciale à l'écran titre....
          @lettres[i].bitmap.font.name ="Adorable" ,"Times New Roman","Arial"
          @lettres[i].bitmap.font.size =32
          end
      lettre=txt[i..i]
         if lettre=="\303"
         lettre=txt[i..i+1]
         end
     @lettres[i].bitmap.font.color.set(255, 255, 255)
     @lettres[i].bitmap.draw_text(0, 0,50,50,lettre)
     @taille[i]=@lettres[i].bitmap.text_size(txt[0..i-1]).width
     @x=x-@lettres[i].bitmap.text_size(txt).width/2
     end
  end
 
  def maj
    if @lettres==nil
    return
    else
     @t+=1
      for i in 0..@lettres.size-1
         if @fermeture==false
        @rayon[i]/=@dr
          if @rayon[i]<1
          @rayon[i]/=4.0
            if @rayon[i]<0.01
           @rayon[i]=0
           end
         end
       else
      @rayon[i]+=0.1
      @rayon[i]*=@dr
      end
   tps=8*i+@t/20.0
   @lettres[i].x=@x+@taille[i]+@rayon[i]*Math.cos(@dl*i/(3.14)+@t/20.0)
   @lettres[i].y=@y+@rayon[i]*               Math.sin(@dl*i/(3.14)+@t/20.0)
      if @rayon[0]>650 and @fermeture==true or @disposition
         for i in 0..@lettres.size-1
         @lettres[i].bitmap.dispose 
         end
      @fin=true
      end
   end
  end
end
end




Mis à jour le 14 novembre 2020.





Aucun commentaire n'a été posté pour le moment.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers