Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

635 connectés actuellement

30729192 visiteurs
depuis l'ouverture

2809 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Maker Détente

RPG Maker VX

Lunae - le bazar d'Emz0

Hellsoft

Zarok

Tous nos partenaires

Devenir
partenaire



Fusion de charas 1.1

Superpose plusieurs charset pour en créer un nouveau.

Script pour RPG Maker VX
Ecrit par Lufia
Publié par Lufia (lui envoyer un message privé)
Signaler un script cassé

❤ 0

Ce script permet de superposer plusieurs charas les uns par dessus les autres. C'est notamment utile si vous voulez afficher l'équipement du joueur sans avoir à dessiner un character par combinaison d'équipement possible.

image
Ralph et ses amis, toujours prêts au combat.






Utilisation

Ressources graphiques
Les planches de chara à superposer aux charas des évènements doivent être sous forme de planches de 12 poses, réparties sur une grille de 3 cases horizontalement et 4 cases verticalement. Ces poses sont ancrées sur le chara de l'évènement par le pixel qui se situe au milieu et en bas de la case de la grille.

image
(Y'a un pixel rouge qui se balade pour marquer le point "ancre" des deux images.)


Base de données
Pour chaque pièce d'équipement (arme ou armure) qui dispose d'un chara, il faut aller le préciser dans la case commentaire de la page de l'arme / armure concernée dans la base de données.

Les champs à renseigner sont :
- le nom du chara (à placer dans le dossier Graphics / Characters)
- la coordonnée z du chara : plus cette coordonnée est grande, plus le chara apparaît au-dessus des autres. Par exemple, si votre armure a une coordonnée z de 1 et votre accessoire "Slip Superman" une coordonnée de 2, l'accessoire sera dessiné au-dessus de l'armure. L'apparence "normale" de l'évènement (ou du joueur) a une coordonnée de 0.
- (optionnel) la teinte : un nombre entre 0 et 360 qui représente le changement de teinte par rapport au dessin original. Faites varier la teinte (et uniquement la teinte) d'un dessin dans un logiciel qui permet de choisir les couleurs en TSL pour voir ce que ça donne. Vaut 0 par défaut.
- (optionnel) l'opacité : entre 0 et 255, si vous voulez qu'on puisse voir votre caleçon à travers votre armure. Vaut 255 par défaut.

La syntaxe est la suivante :

Portion de code : Tout sélectionner

1
2
3
4
lufia_vequip_chara: Nom du chara
lufia_vequip_z: coordonnée z
lufia_vequip_hue: teinte
lufia_vequip_opacity: opacité



Par exemple :

Portion de code : Tout sélectionner

1
2
3
4
lufia_vequip_chara: Epée 1
lufia_vequip_z: 2
lufia_vequip_hue: 35
lufia_vequip_opacity: 160




Commandes
Le script fonctionne de la manière suivante : pour chaque évènement de la carte + le joueur, vous disposez d'un tableau à remplir contenant les charas a superposer à son apparence de base. Le nombre maximum d'éléments de ces tableaux est à définir au début du script, juste en dessous de là ou c'est écrit "# Nombre max de charas à empiler sur un évènement :".

Les charas superposés aux évènements normaux ne valent que pour la map en cours et sont perdus à chaque changement de carte. (Si vous voulez superposer des charas à un évènement, il est donc judicieux de le faire dans un évènement en processus parallèle qui se déclenchera à chaque chargement de la carte.) Les charas superposés au joueur sont gardés durant tout le jeu.

Afficher un chara quelqconque sur un évènement</span>
Dans une insertion de script, utilisez la commande suivante :

Portion de code : Tout sélectionner

1
lufia_vequip_change_sprite(id, sprite, "nom du chara", z, hue, opacity)



- id : L'id de l'évènement. 0 pour désigner le joueur.
- sprite : Le numéro du sprite à changer. Ce nombre est compris entre 0 et le nombre maximum de calques que vous avez défini - 1. Les insertions de script avec des valeurs invalides seront ignorées. Si vous ne changez pas ce chiffre d'une insertion de script à l'autre, vous remplacerez toujours le même chara au lieu d'en superposer de nouveaux.
- "nom du chara" : Le nom du fichier à utiliser. N'oubliez pas les guillemets.
- z : La coordonnée z du chara.
- (optionnel) hue : Le changement de teinte. Vaut 0 par défaut.
- (optionnel) opacity : L'opacité. Vaut 255 par défaut.

Exemples :

Portion de code : Tout sélectionner

1
2
3
lufia_vequip_change_sprite(0, 0, "Banane", 1)
lufia_vequip_change_sprite(2, 1, "oreilles de lapin", 2, 25)
lufia_vequip_change_sprite(2, 3, "collant", 1, 0, 160)



Afficher l'équipement du joueur
Vous pouvez afficher l'équipement du joueur sur son chara. Quand vous changez d'équipement, l'apparence du chara se met à jour toute seule. La commande en insertion de script est semblable à la précédente.

Portion de code : Tout sélectionner

1
lufia_vequip_change_sprite(id, sprite, "équipement")


Les paramètres id et sprite ont la même définition que précédemment. Le dernier argument change. Il vaut "arme" si vous voulez afficher l'arme, "bouclier" pour le bouclier, "armure" pour l'armure, "casque" pour le casque ou "accessoire" pour l'accessoire. Les paramètres z, hue et opacity sont ceux définis dans la base de données pour l'arme / armure équipée.

Exemples :

Portion de code : Tout sélectionner

1
2
lufia_vequip_change_sprite(0, 0, "arme")
lufia_vequip_change_sprite(0, 1, "armure")



Afficher de l'équipement sur un autre chara
Il est également possible d'afficher l'équipement d'un héros sur un chara quelconque. Pour cela, la commande est la même que pour afficher l'équipement du joueur (en spécifiant la bonne id dans la fonction). Il faut cependant marquer l'évènement en commençant sont nom par la commande \a[id] où id est l'id du héros souhaité dans la base de données.

Ainsi, si l'évènement d'id 2 de la carte s'appelle "\a[3]EV002", vous pourrez écrire :

Portion de code : Tout sélectionner

1
lufia_vequip_change_sprite(2, 0, "arme")


et le chara correspondant à l'arme du 3e héros de la base de données sera affiché. C'est pratique si vous voulez avoir l'équipement visible et les héros qui se suivent en chenille.

Si vous essayez d'afficher de l'équipement sur un chara qui n'est pas marqué comme représentant un héros, la commande sera simplement ignorée.

Effacer un chara
La commande à utiliser est

Portion de code : Tout sélectionner

1
lufia_vequip_erase_sprite(id, sprites)


- id : id de l'évènement. 0 pour désigner le joueur.
- sprites : liste des sprites à effacer

Exemple :

Portion de code : Tout sélectionner

1
2
lufia_vequip_erase_sprite(0, 0, 1, 2, 3)
Efface les sprites 0, 1, 2 et 3 du tableau du joueur.




Debug

C'est pas facile de se souvenir du contenu de chaque tableau. Pour vous éviter d'avoir à utiliser 3758 post-its, la liste des charas à superposer sur le joueur et les events de la map en cours est accessible depuis le menu débug. (Vous savez, celui qui apparaît quand on appuie sur F9...)

Appuyez sur A (Maj par défaut) quand vous êtes dans ce menu pour accéder à cette nouvelle fenêtre.


Démo

Je vous ai fait une petite démo, dans laquelle absolument rien n'est expliqué. image Vous y trouverez des exemples de ressources et d'utilisation, mais pas de guide pas à pas. Donc lisez bien le mode d'emploi présent juste au dessus.
La démo en question

Voici enfin le script seul, pour ceux qui préfèrent.

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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
#==============================================================================
# (RMVX)                   ~ Fusion de charas ~
#                                de Lufia
#                                  v 1.1                             4/09/2010
#==============================================================================
# Ce script permet d'empiler des charas sur le joueur ou sur les events de 
# votre choix.
#
# Nombre max de charas à empiler sur un évènement :
OVERLAY_NUMBER = 10
#
#==============================================================================
# Zeus81 a ma gratitude éternelle.
# Enjoy !
#==============================================================================
 
#==============================================================================
# ** RPG::BaseItem
#------------------------------------------------------------------------------
# This class contains items data
#==============================================================================
class RPG::BaseItem
  
  #--------------------------------------------------------------------------
  # * Get Equipment Array for Overlays
  #--------------------------------------------------------------------------
  def lufia_vequip_get_chara
   z, chara_name, hue, opacity = 0, "", 0, 255
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when /lufia_vequip_chara:(.+)/i
        chara_name = $1.strip
      when /lufia_vequip_hue:(.+)/i
        hue = $1.to_i.between?(0, 360) ? $1.to_i : 0
      when /lufia_vequip_opacity:(.+)/i
        opacity = $1.to_i.between?(0, 255) ? $1.to_i : 255
      when  /lufia_vequip_z:(.+)/i
        z = $1.to_i
      end
    }
    return [z, chara_name, hue, opacity]
  end
  
end
 
#==============================================================================
# ** Game_Character
#------------------------------------------------------------------------------
# This class deals with characters. It's used as a superclass of the
# Game_Player and Game_Event classes.
#==============================================================================
class Game_Character
    
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :overlays
  attr_accessor :overlays_need_refresh
 
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias lufia_vequip_initialize initialize
  def initialize
    lufia_vequip_initialize
    @overlays = Array.new(OVERLAY_NUMBER)
    @overlays_need_refresh = false
  end
  
  #--------------------------------------------------------------------------
  # * Representing an actor?
  #--------------------------------------------------------------------------
  def vequip_actor
    return 0
  end
  
end
 
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# This class deals with events. It handles functions including event page 
# switching via condition determinants, and running parallel process events.
# It's used within the Game_Map class.
#==============================================================================
class Game_Event
  
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :name
  
  #--------------------------------------------------------------------------
  # * Objet Initialization
  #--------------------------------------------------------------------------
  alias lufia_vequip_event_initialize initialize
  def initialize(map_id, event)
    @name = event.name
    lufia_vequip_event_initialize(map_id, event)
  end
  
  #--------------------------------------------------------------------------
  # * Representing an actor?
  #--------------------------------------------------------------------------
  def vequip_actor
    return $1.to_i if self.name =~ /^\\[Aa]\[([1-9][0-9]*)]/
    return nil
  end
    
end
 
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter
  
  #--------------------------------------------------------------------------
  # * Change Overlay Sprite
  #      id : event id
  #      sprite : sprite number
  #      args : sprite properties
  #--------------------------------------------------------------------------
  def lufia_vequip_change_sprite(id, sprite, *args)
    return true if !sprite.between?(0, OVERLAY_NUMBER - 1)
    if id == 0
      ev = $game_player
    else
      ev = $game_map.events[id]
    end
    if args.size == 1
      return true if !ev.vequip_actor
      ev.overlays[sprite] = args[0]
    else
      ev.overlays[sprite] = [args[1], args[0], args[2] || 0, args[3] || 255]
    end
    ev.overlays_need_refresh = true
    return true
  end
  
  #--------------------------------------------------------------------------
  # * Erase Overlay Sprite
  #      id : event id
  #      args : sprite numbers
  #--------------------------------------------------------------------------
  def lufia_vequip_erase_sprite(id, *args)
    ev = id == 0 ? $game_player : $game_map.events[id]
    args.each do |a| 
      next if !a.between?(0, OVERLAY_NUMBER - 1) 
      ev.overlays[a] = nil
    end
    ev.overlays_need_refresh = true
    return true
  end
  
  #--------------------------------------------------------------------------
  # * Change Equipment
  #--------------------------------------------------------------------------
  alias lufia_vequip_command_319 command_319
  def command_319
    actor = $game_actors[@params[0]]
    if !actor.nil?
      if actor == $game_party.members[0]
        $game_player.overlays_need_refresh = true
      else
        $game_map.events.each_value do |e|
          e.overlays_need_refresh = true if @params[0] == e.vequip_actor
        end
      end
    end
    lufia_vequip_command_319
  end
  
end
 
#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
# This sprite is used to display characters. It observes a instance of the
# Game_Character class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Character
  
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias lufia_vequip_initialize initialize
  def initialize(viewport, character = nil)
    @vequip_update_src_rect = false
    @charas = []
    lufia_vequip_initialize(viewport, character)
  end
  
  #--------------------------------------------------------------------------
  # * Characters list
  #--------------------------------------------------------------------------
  def charas
    return @charas.sort
  end
  
  #--------------------------------------------------------------------------
  # * Update Transfer Origin Bitmap
  #--------------------------------------------------------------------------
  alias lufia_vequip_update_bitmap update_bitmap
  def update_bitmap
    # If there are no overlays to draw or character is a tile
    if !@character.tile_id.zero? or
      @character.character_name.empty? or
      (!@character.overlays_need_refresh and @character.overlays.nitems.zero?)
      # Run normal update method
      lufia_vequip_update_bitmap
      return
    end
    # If character needs to be redrawn
    if @character_name != @character.character_name or
      @character_index != @character.character_index or
      @character.overlays_need_refresh
      # Update of source rectangle to use ?
      if @character.overlays.nitems.zero?
        @vequip_update_src_rect = @vequip_update_src_rect ? false : true
        if !@vequip_update_src_rect 
          lufia_vequip_update_bitmap
          return
        end
      end
      # Flag variables
      @character.overlays_need_refresh = false
      @character_name = @character.character_name
      @character_index = @character.character_index
      # Array of characters to draw
      @charas = []
      @charas << [0, @character_name, 0, 255]
      # Get equipment for actors
      if @character.overlays.any?{ |o| o.is_a?(String) }
        if @character.is_a?(Game_Player)
          equip = $game_party.members[0].equips
        elsif $game_actors[@character.vequip_actor]
          equip = $game_actors[@character.vequip_actor].equips
        end
      end
      # Get charas to draw
      @character.overlays.each do |o|
        next if o.nil?
        if o.is_a?(String)
          next if !@character.vequip_actor
          case o.downcase
          when "arme"
            eq = equip[0]
          when "bouclier"
            eq = equip[1]
          when "casque"
            eq = equip[2]
          when "armure"
            eq = equip[3]
          when "accessoire"
            eq = equip[4]
          end
          @charas << eq.lufia_vequip_get_chara if (eq and !eq.lufia_vequip_get_chara[1].empty?)
        else
          @charas << o
        end
      end
      @charas.sort!
      # Get max width and height
      max_width = max_height = 1
      @charas.each do |c|
        bitmap = Cache.character(c[1])
        if c[1] != @character_name or ((sign = c[1][/^[\!\$]./]) and sign.include?('$'))
          max_width = [max_width, bitmap.width / 3].max
          max_height = [max_height, bitmap.height / 4].max
        else
          max_width = [max_width, bitmap.width / 12].max
          max_height = [max_height, bitmap.height / 8].max
        end
      end
      # Draw charas
      self.bitmap = Bitmap.new(max_width*3, max_height*4)
      @charas.each do |c|
        bitmap = Cache.load_bitmap("Graphics/Characters/", c[1], c[2])              
        if c[1] != @character_name or ((sign = c[1][/^[\!\$]./]) and sign.include?('$'))
          width = bitmap.width / 3
          height = bitmap.height / 4
          ix = iy = 0
        else
          width = bitmap.width / 12
          height = bitmap.height / 8
          ix = (@character_index % 4 * 3) * width
          iy = (@character_index / 4 * 4) * height
        end
        for i in 0..2
          for j in 0..3
            x = max_width * i + (max_width - width) / 2
            y = max_height * (j + 1) - height
            rect = Rect.new(ix + width * i, iy + height * j, width, height)
            self.bitmap.blt(x, y, bitmap, rect, c[3])
          end
        end
      end
      # Set point of origin
      @cw = max_width
      @ch = max_height
      self.ox = @cw / 2
      self.oy = @ch
    end
  end
  
  #--------------------------------------------------------------------------
  # * Update Transfer Origin Rectangle
  #--------------------------------------------------------------------------
  alias lufia_vequip_update_src_rect update_src_rect
  def update_src_rect
    # If there are no overlays to draw
    if !@character.tile_id.zero? or 
       (!@vequip_update_src_rect and @character.overlays.nitems.zero?)
      lufia_vequip_update_src_rect
      return
    end
    # Update source rectangle
    sx = (@character.pattern < 3 ? @character.pattern : 1) * @cw
    sy = (@character.direction - 2) / 2 * @ch
    self.src_rect.set(sx, sy, @cw, @ch)
  end
     
end
 
#==============================================================================
# ** Window_SaveFile
#------------------------------------------------------------------------------
#  This window displays save files on the save and load screens.
#==============================================================================
class Window_SaveFile
  
  #--------------------------------------------------------------------------
  # * Load Partial Game Data
  #    By default, switches and variables are not used (for expansion use,
  #    such as displaying place names)
  #--------------------------------------------------------------------------
  def load_gamedata
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      begin
        @charas         = Marshal.load(file)
        @characters     = Marshal.load(file)
        @frame_count    = Marshal.load(file)
        @last_bgm       = Marshal.load(file)
        @last_bgs       = Marshal.load(file)
        @game_system    = Marshal.load(file)
        @game_message   = Marshal.load(file)
        @game_switches  = Marshal.load(file)
        @game_variables = Marshal.load(file)
        @total_sec = @frame_count / Graphics.frame_rate
      rescue
        @file_exist = false
      ensure
        file.close
      end
    end
  end
 
 
  #--------------------------------------------------------------------------
  # * Draw Party Characters
  #     x : Draw spot X coordinate
  #     y : Draw spot Y coordinate
  #--------------------------------------------------------------------------
  def draw_party_characters(x, y)
    @charas.each_index do |i|
      charname = @charas[i][1]
      charindex = @charas[i][0]
      max_width = max_height = 1
      # Get max width and height
      @charas[i][2].each do |c|
        bitmap = Cache.character(c[1])
        if c[1] != charname or ((sign = c[1][/^[\!\$]./]) and sign.include?('$'))
          max_width = [max_width, bitmap.width / 3].max
          max_height = [max_height, bitmap.height / 4].max
        else
          max_width = [max_width, bitmap.width / 12].max
          max_height = [max_height, bitmap.height / 8].max
        end
      end
      # Draw charas
      @charas[i][2].each do |c|
        bitmap = Cache.load_bitmap("Graphics/Characters/", c[1], c[2])              
        if c[1] != charname or ((sign = c[1][/^[\!\$]./]) and sign.include?('$'))
          width = bitmap.width / 3
          height = bitmap.height / 4
          ix = iy = 0
        else
          width = bitmap.width / 12
          height = bitmap.height / 8
          ix = (charindex % 4 * 3) * width
          iy = (charindex / 4 * 4) * height
        end
        px = x + i * 48 + (max_width - width) / 2
        py = y - max_height
        rect = Rect.new(ix + width, iy, width, height)
        self.contents.blt(px, py, bitmap, rect, c[3])
      end
    end
  end
 
end
 
#==============================================================================
# ** Window_Events
#------------------------------------------------------------------------------
# This window displays characters of the current map on the debug screen
#==============================================================================
class Window_Events < Window_Selectable
  
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 176, 416)
    self.index = 0
    self.active = false
    self.visible = false
    refresh
  end
  
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    @item_max = $game_map.events.size + 1
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    if index == 0
      text = "Joueur"
    else
      text = "#{index} : #{$game_map.events[index].name}"
    end
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.draw_text(rect, text)
  end
  
end
 
#==============================================================================
# ** Window_Overlays
#------------------------------------------------------------------------------
# This window displays overlays for a given character on the debug screen
#==============================================================================
class Window_Overlays < Window_Base
   
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(176, 0, 368, 416)
    @event = -1
    self.visible = false
    self.contents.font.size = 18
  end
 
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...OVERLAY_NUMBER
      draw_item(i)
    end
  end
 
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    if @event == 0
      ev = $game_player.overlays
    else
      ev = $game_map.events[@event].overlays
    end
    if ev[index].nil?
      text = "Vide"
    elsif ev[index].is_a?(String)
      text = ev[index].capitalize
    else
      text = "#{ev[index][1]} / z : #{ev[index][0]} / h : #{ev[index][2]}  / o : #{ev[index][3]}"
    end
    rect = Rect.new(0, index*WLH, self.contents.width, WLH)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.draw_text(rect, text)
  end
 
  #--------------------------------------------------------------------------
  # * Frame update
  #      ev : event id
  #--------------------------------------------------------------------------
  def update(ev)
    if @event != ev
      @event = ev
      refresh if @event != -1
    end
  end
  
end
 
#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  This class performs the save and load screen processing.
#==============================================================================
class Scene_File
 
  #--------------------------------------------------------------------------
  # * Write Save Data
  #     file : write file object (opened)
  #--------------------------------------------------------------------------
  alias lufia_vequip_write_save_data write_save_data
  def write_save_data(file)
    charas = []
    view = Viewport.new(0, 0, 544, 416)
    sprite = Sprite_Character.new(view, $game_player)
    charas.push([$game_player.character_index, $game_player.character_name, 
                 sprite.charas])
    for i in 1..3
      next if $game_party.members[i].nil?
      flag = false
      $game_map.events.each_value do |e|
        if e.vequip_actor == $game_party.members[i].id
          sprite = Sprite_Character.new(view, e)
          charas.push([e.character_index, e.character_name, sprite.charas])
          flag = true
        end
      end
      if !flag
        charas.push([$game_party.members[i].character_index, 
                     $game_party.members[i].character_name, 
                     [[0, $game_party.members[i].character_name, 0, 255]]])
      end
    end
    Marshal.dump(charas, file)
    lufia_vequip_write_save_data(file)
  end
  
  #--------------------------------------------------------------------------
  # * Read Save Data
  #     file : file object for reading (opened)
  #--------------------------------------------------------------------------
  alias lufia_vequip_read_save_data read_save_data
  def read_save_data(file)
    charas = Marshal.load(file)
    lufia_vequip_read_save_data(file)
  end
 
end
 
#==============================================================================
# ** Scene_Debug
#------------------------------------------------------------------------------
# This class performs debug screen processing.
#==============================================================================
class Scene_Debug
  
  #--------------------------------------------------------------------------
  # * Start Processing
  #--------------------------------------------------------------------------
  alias lufia_vequip_start start
  def start
    lufia_vequip_start
    @events_window = Window_Events.new
    @overlays_window = Window_Overlays.new
  end
  
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  alias lufia_vequip_terminate terminate
  def terminate
    lufia_vequip_terminate
    @events_window.dispose
    @overlays_window.dispose
  end
  
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias lufia_vequip_update update
  def update
    @events_window.update
    @overlays_window.update(@events_window.index)
    lufia_vequip_update
    if @events_window.active
      update_events
    end
    if Input.trigger?(Input::A)
      @events_window.visible = @overlays_window.visible = true
      @left_window.active = @right_window.active = false
      @events_window.active = true
      return
    end
  end
 
  #--------------------------------------------------------------------------
  # * Update Events Window Input
  #--------------------------------------------------------------------------
  def update_events
    if Input.trigger?(Input::B)
      @events_window.active = false
      @events_window.visible = @overlays_window.visible = false
      @left_window.active = @right_window.active = true
      return
    end
  end
  
end


Pour les rapports de bugs, demandes d'améliorations ou lettres d'insultes, laissez un commentaire juste en-dessous.




Zeus81 - posté le 11/08/2010 à 22:27:18 (11071 messages postés)

❤ 0

La balise code marche pas. oO
T'avais pas prévu un truc pour activer/désactiver le script sans perdre la config ?

Citation:

gratitude éternelle

Youhou... :F


Lufia - posté le 11/08/2010 à 23:22:33 (5792 messages postés)

❤ 0

Un Oniromancien. PVs 1, Attaque 0, Défense 0.

Citation:

T'avais pas prévu un truc pour activer/désactiver le script sans perdre la config ?


Non, ça n'a jamais été au programme. Ça me paraît pas hyper utile, mais si y'a une énorme demande populaire...

Une signature ? Pour quoi faire ?


kilam1110 - posté le 12/08/2010 à 03:11:40 (9159 messages postés)

❤ 0

Bravo Lulu. :kirby

New RPG Maker - Forum traitant du logiciel RPG Maker tout en français ! | SURVIVE V2.5 - Dégommez du zombie !


tfkmaster - posté le 12/08/2010 à 03:40:20 (238 messages postés)

❤ 0

S.T.A.L.K.E.R for the life

Ouais GG Lufia !! ^^


Tata-Monos - posté le 12/08/2010 à 08:52:54 (57322 messages postés)

❤ 0

Vive le homebrew

Bravos Nonor !

Signer du nez ?


kmi81 - posté le 12/08/2010 à 21:59:21 (102 messages postés)

❤ 0

Buvez, c'est mon sang. Mangez, c'est mon corps. Touchez pas c'est mon cul.

Absolument génial!

Commence tout, ne fini rien...


Heavy Rain - posté le 13/08/2010 à 11:54:50 (1053 messages postés)

❤ 0

Ouais. Vraiment cool


Joke - posté le 15/08/2010 à 14:58:19 (5090 messages postés)

❤ 0

Bilouteux fou

Trèèèès bon script = ) Bien joué, Lufia !

biloumaster.fr, mon joli site ouèb tout bô tout frai !


Strift - posté le 16/08/2010 à 00:45:18 (210 messages postés)

❤ 0

Bravo, c'est vraiment un bon script. Et qui va être pas mal utilisé je pense.
Sinon, j'aime bien le nom de tes méthodes. :p

En fait, non.


manukikiprout - posté le 18/08/2010 à 11:02:08 (2 messages postés)

❤ 0

Se remet au Making SERIEUSEMENT !

Un Système génial mais il y a néanmoins une faille !
Regarde ton jeu, ouvres-le, joues-y, sauvegardes, re-sauvegardes pour pouvoir voir tes sauvegardes et regarde: le personnage 2, 3 et 4 sont sans leur équipement (mais ça c'est pas grave, vu qu'il l'ont rangé ou alors c'est juste pour montrer les persos, on s'en fout de l'équipement) MAIS PAR CONTRE, TON HÉROS EST EN CALBUT ! ce qui fait que l'image de sauvegarde change de la réalité et n'affiche que les persos dans leur état initial ( et donc en caleçon pour le héros ^^) !



NB: Ton bouclier est bizarre il se tient de la main droite, donc si quelqu'un a une massue et un bouclier, comme je l'ai essayé, il tien les deux a la main droite O_O !

Si tu est débile, tu est comme moi !


clix - posté le 27/08/2010 à 11:33:58 (3 messages postés)

❤ 0

Cest trop cool ce script :ange:sonic


Lufia - posté le 04/09/2010 à 16:39:00 (5792 messages postés)

❤ 0

Un Oniromancien. PVs 1, Attaque 0, Défense 0.

Version 1.1 : Les charas sur les fenêtres de sauvegarde correspondent aux charas avec l'équipement visible. Le script n'est donc plus compatible avec les systèmes de sauvegarde custom.

Pour les armes / boucliers qui se chevauchent, vous vous démerdez pour dessiner ça correctement.

Une signature ? Pour quoi faire ?


Tololu - posté le 10/09/2010 à 20:51:32 (8 messages postés)

❤ 0

Une statue ? Où ça ?

BIG GG ! J'adore ! Je l'introduirais dans mon prochain projet Sûr !!

Euh j'suis obligé d'en mettre une ?


Eichimaru - posté le 27/11/2010 à 12:14:46 (209 messages postés)

❤ 0

Graphiste en puissance!!

eske ce serai possible d'avoir le meme mais pour Xp?
Si non Bravo!

Iron::http://iron.xooit.fr/index.php


thom123 - posté le 22/01/2011 à 14:45:33 (47 messages postés)

❤ 0

Eh! c'est pas parce que tu suce des glands que tu deviendras un écureuils, hein!

...
J'ai trops d'arme et d'icone...:oO


Lord lagiacrus - posté le 03/06/2011 à 17:31:20 (4 messages postés)

❤ 0

Jhhiirooo... Luke... Je suis ton père! NON!

Vraiment génial ce truc! :joint Un petit peu diff à comprendre sur le coups mais après c'est comme sur des roulettes!:noel

Luttons contre le réchauffement climatique... ouvrons nos frigos!


silvers83 - posté le 23/10/2011 à 21:28:17 (1 messages postés)

❤ 0

illimited

terrible ton script maisje vous savoir s il y a un moyen qu il marche dans les combats gtbs?

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