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

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

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

457 connectés actuellement

29377709 visiteurs
depuis l'ouverture

7076 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Le Temple de Valor

Lumen

Eclipso

RPG Maker VX

RPG Maker Détente

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Scripts > [ACE] Utiliser les maps de RPG Maker XP sur VX Ace


Erwill - posté le 25/03/2018 à 17:09:16 (172 messages postés)

❤ 0

 

TSDA XP Ace Maping - Utiliser les maps de RPG Maker XP sur VX Ace
Par thiago_d_d




Vous avez un peu de mal avec le système de maping de VX Ace et celui de XP vous manque ? (Comme moi)
Et bien ce script est fait pour vous.

Le script chargera les maps, les tilesets et les autotiles fabriqués avec RPG Maker XP.


I- Installation

Vous devez installer ces deux scripts dans leur version respective. (L'instruction dans ces scripts est en portugais, mais je vous l'expliquerai en français)

Le premier est pour RPG Maker XP

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
#==============================================================================
# XP Ace Mapping
# RMXP part
# by thiago_d_d
# Tilemap class by ____
#==============================================================================
# Com esse script, você poderá mapear usando o XP para criar mapas de VX Ace!
#==============================================================================
# Para instalar coloque o script acima de Main.
#==============================================================================
# Como fazer a conversão:
# Instale o script RMVXAce part no seu projeto do rmvx ace, primeiramente. Não se
# esqueça, use pasta separadas para o projeto do xp e o do vx ace.
#
# Para cada mapa no vx ace, você deverá criar um mapa de igual tamanho no XP. Os
# dois devem ter a mesma ID.
#
# Mapeie normalmente no xp, lembrando que os eventos que você colocar no
# mapa do XP não funcionarão no Ace. Se for necessário colocar eventos,
# coloque no Ace, gravando qual a posição em que o evento deverá ser colocado.
# A única coisa para que servirá o uso do XP será para mapear: apenas
# as passagens do tileset e sua aparência serão colocados no mapa pronto
# do vx ace.
#
# Após terminar de mapear, desca o script que voce está lendo agora, até achar
# uma parte em que está MAPS = [1]. Coloque entre os colchetes a ID do mapa em
# questão. Lembrando que entre os colchetes deve estar todas as IDs de todos
# os mapas que serão convertidos para o vx ace, separados por vírgula, no modelo:
# MAPS = [1,2,3,....999]
#
# Coloque os gráficos de tileset e autotiles na pasta Graphics\Tilesets e
# Graphics\Autotiles do projeto de VX Ace.
#
# Em seguida, execute o projeto do XP e espere até que a title seja carregada.
# Após isso, copie os arquivos TilesetsXP.rxdata e Map"ID do mapa"XP.rxdata
# na pasta Data no projeto do XP e copie para a pasta Data no projeto
# do ace. Pronto!
#==============================================================================
module TSDA
  #Coloque a ID dos mapas a serem convertidos
  MAPS = [1]
end
 
class TilesetXP
  attr_accessor :id
  attr_accessor :name
  attr_accessor :tileset_name
  attr_accessor :autotile_names
  attr_accessor :priorities
  attr_accessor :terrain_tags
  attr_accessor :flags
 
  def initialize(til)
    @id = til.id
    @name = til.name
    @tileset_name = til.tileset_name
    @autotile_names = til.autotile_names
    @priorities = til.priorities
    @terrain_tags = til.terrain_tags
    @flags = til.passages
    convert
  end
 
  def convert
    for i in 0...@priorities.xsize
      v = @flags[i]
      if i == 0
        v |= 0x10
      else
        v &= ~0x10
      end
      @flags[i] = v
    end
  end
end
 
class MapXP
  def initialize(map)
    @tileset_id = map.tileset_id
    @width = map.width
    @height = map.height
    @data = map.data
  end
  attr_accessor :tileset_id
  attr_accessor :width
  attr_accessor :height
  attr_accessor :data
end
 
def initialize_maps
  data_tilesets      = load_data("Data/Tilesets.rxdata")
  for map in TSDA::MAPS
    m = load_data(sprintf("Data/Map%03d.rxdata", map))
    mapxp = MapXP.new(m)
    save_data(mapxp,sprintf("Data/Map%03dXP.rxdata", map))
  end
  data_tilesetsxp = []
  for til in 0...data_tilesets.size
    next if data_tilesets[til].nil?
    tilesetxp = TilesetXP.new(data_tilesets[til])
    data_tilesetsxp[til] = tilesetxp
  end
  save_data(data_tilesetsxp,"Data/TilesetsXP.rxdata")
end
initialize_maps



Le second est pour RPG Maker VX Ace

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
#==============================================================================
# XP Ace Mapping
# RMVXAce part
# by thiago_d_d
#==============================================================================
# Para instalar coloque o script acima de Main(é importante que esteja após
# todos os scripts)
#==============================================================================
module Cache
  def self.tilesetxp(filename)
    load_bitmap("Graphics/Tilesets/", filename)
  end
 
  def self.autotile(filename)
    load_bitmap("Graphics/Autotiles/", filename)
  end
end
 
class TilesetXP
  attr_accessor :id
  attr_accessor :name
  attr_accessor :tileset_name
  attr_accessor :autotile_names
  attr_accessor :priorities
  attr_accessor :terrain_tags
  attr_accessor :flags
end
 
class MapXP
  attr_accessor :tileset_id
  attr_accessor :width
  attr_accessor :height
  attr_accessor :data
end
 
module DataManager
  class << self
    alias load_normal_database_comp load_normal_database
    def load_normal_database
      load_normal_database_comp
      $data_tilesetsxp = load_data("Data/TilesetsXP.rxdata")
    end
  end
end
 
class Game_CharacterBase
  def screen_z
    tile? ? (return (@priority_type + 1) * 150) : (return (@priority_type) * 150)
   
  end
end
 
class Sprite_Character
  def tileset_bitmap(tile_id)
    Cache.tileset($game_map.tilesetoriginal.tileset_names[5 + tile_id / 256])
  end
end
 
class Game_Map
  alias game_map_xp_comp setup
  alias tilesetoriginal tileset
  def setup(map_id)
    @mapxp = load_data(sprintf("Data/Map%03dXP.rxdata", map_id))
    @tilesetxp = $data_tilesetsxp[@mapxp.tileset_id]
    game_map_xp_comp(map_id)
  end
 
  def tileset_namexp
    @tilesetxp.tileset_name
  end
 
  def autotile_namesxp
    @tilesetxp.autotile_names
  end
 
  def tileset
    @tilesetxp
  end
 
  def priorities
    @tilesetxp.priorities
  end
 
  def dataxp
    @mapxp.data
  end
 
  def tile_id(x, y, z)
    dataxp[x,y,z]
  end
 
  def layered_tiles(x, y)
    [2, 1, 0].collect {|z| tile_id(x, y, z) }
  end
 
  def check_passage(x, y, bit)
    v = tile_events_xy(x, y).collect {|ev| ev.tile_id }
    v.each do |tile_id|
      flag = tilesetoriginal.flags[tile_id]
      next if flag & 0x10 != 0
      return false if flag & bit == bit
    end
    for i in [2, 1, 0]
      tile_id = tile_id(x,y,i)
      if tile_id == nil
        return false
      elsif tileset.flags[tile_id] & bit != 0
        return false
      elsif tileset.flags[tile_id] & 0x0f == 0x0f
        return false
      elsif tileset.priorities[tile_id] == 0
        return true
      end
    end
  end
end
 
class Spriteset_Map
  def create_tilemap
    load_tilemap
    load_tileset
  end
 
  def load_tilemap
    dispose_tilemap unless @tilemap.nil?
    at = []
    for i in 0..6 
      autotile_name = $game_map.autotile_namesxp[i]
      at[i] = Cache.autotile(autotile_name) 
    end
    @tilemap = Tilemap.new(@viewport1)
    @tilemap.tileset = Cache.tileset($game_map.tileset_namexp)
    for i in 0..6
      autotile_name = $game_map.autotile_namesxp[i]
      @tilemap.autotiles[i] = Cache.autotile(autotile_name)
    end
    @tilemap.map_data = $game_map.dataxp
    @tilemap.priorities = $game_map.priorities
  end
 
  def dispose_tilemap
    @tilemap.tileset.dispose 
    for i in 0..6
      @tilemap.autotiles[i].dispose
    end 
    @tilemap.dispose
  end
 
  def load_tileset
    @tileset = $game_map.tileset
  end
 
  def update_tileset
    if @tileset != $game_map.tileset
      load_tileset
      refresh_characters
    end
  end
 
  def update_tilemap
    if @map_id != $game_map.map_id
      load_tilemap
    end
    @tilemap.ox = $game_map.display_x * 32
    @tilemap.oy = $game_map.display_y * 32
    @tilemap.update
  end
end
 
class Tilemap
  attr_accessor :viewport
  attr_accessor :ox
  attr_accessor :oy
  attr_accessor :tileset
  attr_accessor :autotiles
  attr_accessor :map_data
  attr_reader   :priorities
  attr_reader   :visible
 
  Autotiles = [
    [ [27, 28, 33, 34], [ 5, 28, 33, 34], [27,  6, 33, 34], [ 5,  6, 33, 34],
      [27, 28, 33, 12], [ 5, 28, 33, 12], [27,  6, 33, 12], [ 5,  6, 33, 12] ],
    [ [27, 28, 11, 34], [ 5, 28, 11, 34], [27,  6, 11, 34], [ 5,  6, 11, 34],
      [27, 28, 11, 12], [ 5, 28, 11, 12], [27,  6, 11, 12], [ 5,  6, 11, 12] ],
    [ [25, 26, 31, 32], [25,  6, 31, 32], [25, 26, 31, 12], [25,  6, 31, 12],
      [15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12] ],
    [ [29, 30, 35, 36], [29, 30, 11, 36], [ 5, 30, 35, 36], [ 5, 30, 11, 36],
      [39, 40, 45, 46], [ 5, 40, 45, 46], [39,  6, 45, 46], [ 5,  6, 45, 46] ],
    [ [25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12],
      [17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [ 5, 42, 47, 48] ],
    [ [37, 38, 43, 44], [37,  6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44],
      [37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [ 1,  2,  7,  8] ] ]
 
  def initialize(viewport)
    @viewport = viewport
    @map_data = nil
    @autotiles = []
    @real_map_data = nil
    @bitmaps = []
    @sprites = nil
    @disposed = false
    @ox = 0
    @oy = 0
    @autotile_sprites = {}
    @anim_list = []
    @stored_autotiles = {}
    @stored_tiles = {}
    @visible = true
    @anim_count = 0
    @anim_list = []
  end
 
  def priorities=(v)
    @priorities = v
    refresh
  end
 
  def refresh
    @stored_tiles = {}
    @stored_autotiles = {}
    @map_data = @real_map_data
    @autotile_max_count = []
    @autotile_count = []
    @sprites = []
    @anim_list = []
    create_sprites
  end
 
  def map_data=(data)
    @real_map_data = data
  end
 
  def map_data
    @real_map_data
  end
 
  def create_sprites
    for i in 0..6
      @autotile_max_count[i] = @autotiles[i].width / 96
      @autotile_count[i] = 0
    end
    @sprites = []
    for z in 0...3
      for x in 0...@map_data.xsize
        for y in 0...@map_data.ysize
          tile_id = @map_data[x,y,z]
          next if tile_id.nil? or tile_id == 0
          if tile_id < 384
            create_at(x,y,tile_id,z)
          else
            create_t(x,y,tile_id,z)
          end
        end
      end
    end
    update_sprites
  end
 
  def create_at(x,y,id,z)
    count = @autotile_count[id / 48 - 1]
    string = "##{id}##{count}"
    string2 = "##{x}##{y}##{z}"
    if @stored_autotiles[string].nil?
      autotile = @autotiles[id / 48 - 1]
      tid = id % 48
      bitmap = Bitmap.new(32,32)
      tiles = Autotiles[tid / 8][tid % 8]
      anim = count * 96
      for i in 0...4
        tile_position = tiles[i] - 1
        src_rect = Rect.new(tile_position % 6 * 16 + anim, tile_position / 6 * 16, 16, 16)
        bitmap.blt(i % 2 * 16, i / 2 * 16, autotile, src_rect)
      end
      @stored_autotiles[string] = bitmap
    end
    if @autotile_sprites[string2].nil?
      sp = Sprite.new(@viewport)
      sp.x = x * 32
      sp.y = y * 32
      c = @priorities[id]
      c += 1 if c > 0
      sp.z = 150 * c
      @autotile_sprites[string2] = sp
      @anim_list.push([x,y,id,z])
    end
    @autotile_sprites[string2].bitmap = @stored_autotiles[string]
  end
 
  def create_t(x,y,id,z)
    string = "##{id}"
    if @stored_tiles[string].nil?
      rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32)
      bt = Bitmap.new(32,32)
      bt.blt(0,0,@tileset,rect)
      @stored_tiles[string] = bt
    end
    sp = Sprite.new(@viewport)
    sp.x = x * 32
    sp.y = y * 32
    c = @priorities[id]
    c += 1 if c > 0
    sp.z = 150 * c
    sp.bitmap = @stored_tiles[string]
    @sprites.push(sp)
  end
 
  def update
    return if disposed?
    if @map_data != @real_map_data
      refresh
    end
    @anim_count += 1
    if @anim_count >= 15
      @anim_count = 0
      for i in 0..6
        @autotile_count[i] += 1
        @autotile_count[i] = 0 if @autotile_count[i] >= @autotile_max_count[i]
      end
      for b in @anim_list
        create_at(b[0],b[1],b[2],b[3])
      end
    end
  end
 
  def update_sprites
    @autotile_sprites.each_value{|v|v.ox = @ox;v.oy = @oy;v.visible = @visible}
    for sp in @sprites;sp.ox = @ox;sp.oy = @oy;sp.visible = @visible;end
  end
   
  def dispose
    dispose_sprites unless @sprites.nil?
    @disposed = true
  end
 
  def disposed?
    @disposed
  end
 
  def ox=(v)
    @ox = v
    update_sprites
  end
 
  def oy=(v)
    @oy = v
    update_sprites
  end
 
  def visible=(v)
    @visible = v
    update_sprites
  end
 
  def dispose_sprites
    unless @sprites.nil?
      for element in @sprites
        element.dispose unless element.nil?
      end
      @sprites = nil
    end
    @autotile_sprites.each_value{|sprite|sprite.dispose unless sprite.nil?}
    @autotile_sprites = {}
    GC.start
  end
end




II - Comment ça marche ?

Avec RPG Maker XP :

Vous devez créer un nouveau projet et installer le premier script, rendez-vous à la ligne 41 où vous mettez l'id des maps que vous souhaitez convertir. (Par exemple "MAPS = [1,2,3,4,8]")
Faites simplement votre map, sauvegardez puis testez le projet et fermez le test.

Allez dans le dossier "Data" et vous verrez qu'il y a des fichiers supplémentaires :
- TilesetsXP.rxdata sont là où les tilesets de XP s'y trouvent.
- MapIDXP.rxdata ce sont les maps qui sont convertis pour VX Ace.

Il est inutile de créer les events et de mettre les panoramas/fogs dessus, ce script ne chargera que la tilemap.

Avec RPG Maker VX Ace :

Vous copiez ces fichiers ci-dessus dans le dossier "Data" de votre projet ainsi que le les graphismes utilisés pour les tilesets sur XP. (Pour les autotiles, vous devez créer un dossier "Autotiles" dans le dossier graphique de votre projet.

Lancez et normalement, RPG Maker VX Ace chargera la map correspondante. (La tilemap de VX Ace ne sera pas pris en compte)


III - Petit correctif

Le seul truc que je reprochais à ce script, c'est que les tiles qui ont ☆1, ☆2, ☆3, ☆4 ou ☆5 en priorité de superposition s'afficheront au dessus du héro quoi qu'il arrive.

J'ai modifié comme j'ai pu le script de VX Ace pour corriger ça, par exemple, les tiles qui ont ☆1 en superposition seront sous ou sur l'event s'il est en bas ou en haut :

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
#==============================================================================
# XP Ace Mapping
# RMVXAce part
# by thiago_d_d
#==============================================================================
# Para instalar coloque o script acima de Main(é importante que esteja após
# todos os scripts)
#==============================================================================
# Edited by Erwill
#==============================================================================
module Cache
  def self.tilesetxp(filename)
    load_bitmap("Graphics/Tilesets/", filename)
  end
 
  def self.autotile(filename)
    load_bitmap("Graphics/Autotiles/", filename)
  end
end
 
class TilesetXP
  attr_accessor :id
  attr_accessor :name
  attr_accessor :tileset_name
  attr_accessor :autotile_names
  attr_accessor :priorities
  attr_accessor :terrain_tags
  attr_accessor :flags
end
 
class MapXP
  attr_accessor :tileset_id
  attr_accessor :width
  attr_accessor :height
  attr_accessor :data
end
 
module DataManager
  class << self
    alias load_normal_database_comp load_normal_database
    def load_normal_database
      load_normal_database_comp
      $data_tilesetsxp = load_data("Data/TilesetsXP.rxdata")
    end
  end
end
 
class Game_CharacterBase
  def screen_z
    if @priority_type==2
    tile? ? (return (@priority_type*2 + 1) * 150 + @y*160) : (return (@priority_type*2) * 150 + @y*160)
    else
    tile? ? (return (@priority_type + 1) * 150 + @y*160) : (return (@priority_type) * 150 + @y*160)
    end
  end
end
 
class Sprite_Character
  def tileset_bitmap(tile_id)
    Cache.tileset($game_map.tilesetoriginal.tileset_names[5 + tile_id / 256])
  end
end
 
class Game_Map
  alias game_map_xp_comp setup
  alias tilesetoriginal tileset
  def setup(map_id)
    @mapxp = load_data(sprintf("Data/Map%03dXP.rxdata", map_id))
    @tilesetxp = $data_tilesetsxp[@mapxp.tileset_id]
    game_map_xp_comp(map_id)
  end
 
  def tileset_namexp
    @tilesetxp.tileset_name
  end
 
  def autotile_namesxp
    @tilesetxp.autotile_names
  end
 
  def tileset
    @tilesetxp
  end
 
  def priorities
    @tilesetxp.priorities
  end
 
  def dataxp
    @mapxp.data
  end
 
  def tile_id(x, y, z)
    dataxp[x,y,z]
  end
 
  def layered_tiles(x, y)
    [2, 1, 0].collect {|z| tile_id(x, y, z) }
  end
 
  def check_passage(x, y, bit)
    v = tile_events_xy(x, y).collect {|ev| ev.tile_id }
    v.each do |tile_id|
      flag = tilesetoriginal.flags[tile_id]
      next if flag & 0x10 != 0
      return false if flag & bit == bit
    end
    for i in [2, 1, 0]
      tile_id = tile_id(x,y,i)
      if tile_id == nil
        return false
      elsif tileset.flags[tile_id] & bit != 0
        return false
      elsif tileset.flags[tile_id] & 0x0f == 0x0f
        return false
      elsif tileset.priorities[tile_id] == 0
        return true
      end
    end
  end
end
 
class Spriteset_Map
  def create_tilemap
    load_tilemap
    load_tileset
  end
 
  def load_tilemap
    dispose_tilemap unless @tilemap.nil?
    at = []
    for i in 0..6 
      autotile_name = $game_map.autotile_namesxp[i]
      at[i] = Cache.autotile(autotile_name) 
    end
    @tilemap = Tilemap.new(@viewport1)
    @tilemap.tileset = Cache.tileset($game_map.tileset_namexp)
    for i in 0..6
      autotile_name = $game_map.autotile_namesxp[i]
      @tilemap.autotiles[i] = Cache.autotile(autotile_name)
    end
    @tilemap.map_data = $game_map.dataxp
    @tilemap.priorities = $game_map.priorities
  end
 
  def dispose_tilemap
    @tilemap.tileset.dispose 
    for i in 0..6
      @tilemap.autotiles[i].dispose
    end 
    @tilemap.dispose
  end
 
  def load_tileset
    @tileset = $game_map.tileset
  end
 
  def update_tileset
    if @tileset != $game_map.tileset
      load_tileset
      refresh_characters
    end
  end
 
  def update_tilemap
    if @map_id != $game_map.map_id
      load_tilemap
    end
    @tilemap.ox = $game_map.display_x * 32
    @tilemap.oy = $game_map.display_y * 32
    @tilemap.update
  end
end
 
class Tilemap
  attr_accessor :viewport
  attr_accessor :ox
  attr_accessor :oy
  attr_accessor :tileset
  attr_accessor :autotiles
  attr_accessor :map_data
  attr_reader   :priorities
  attr_reader   :visible
 
  Autotiles = [
    [ [27, 28, 33, 34], [ 5, 28, 33, 34], [27,  6, 33, 34], [ 5,  6, 33, 34],
      [27, 28, 33, 12], [ 5, 28, 33, 12], [27,  6, 33, 12], [ 5,  6, 33, 12] ],
    [ [27, 28, 11, 34], [ 5, 28, 11, 34], [27,  6, 11, 34], [ 5,  6, 11, 34],
      [27, 28, 11, 12], [ 5, 28, 11, 12], [27,  6, 11, 12], [ 5,  6, 11, 12] ],
    [ [25, 26, 31, 32], [25,  6, 31, 32], [25, 26, 31, 12], [25,  6, 31, 12],
      [15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12] ],
    [ [29, 30, 35, 36], [29, 30, 11, 36], [ 5, 30, 35, 36], [ 5, 30, 11, 36],
      [39, 40, 45, 46], [ 5, 40, 45, 46], [39,  6, 45, 46], [ 5,  6, 45, 46] ],
    [ [25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12],
      [17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [ 5, 42, 47, 48] ],
    [ [37, 38, 43, 44], [37,  6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44],
      [37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [ 1,  2,  7,  8] ] ]
 
  def initialize(viewport)
    @viewport = viewport
    @map_data = nil
    @autotiles = []
    @real_map_data = nil
    @bitmaps = []
    @sprites = nil
    @disposed = false
    @ox = 0
    @oy = 0
    @autotile_sprites = {}
    @anim_list = []
    @stored_autotiles = {}
    @stored_tiles = {}
    @visible = true
    @anim_count = 0
    @anim_list = []
  end
 
  def priorities=(v)
    @priorities = v
    refresh
  end
 
  def refresh
    @stored_tiles = {}
    @stored_autotiles = {}
    @map_data = @real_map_data
    @autotile_max_count = []
    @autotile_count = []
    @sprites = []
    @anim_list = []
    create_sprites
  end
 
  def map_data=(data)
    @real_map_data = data
  end
 
  def map_data
    @real_map_data
  end
 
  def create_sprites
    for i in 0..6
      @autotile_max_count[i] = @autotiles[i].width / 96
      @autotile_count[i] = 0
    end
    @sprites = []
    for z in 0...3
      for x in 0...@map_data.xsize
        for y in 0...@map_data.ysize
          tile_id = @map_data[x,y,z]
          next if tile_id.nil? or tile_id == 0
          if tile_id < 384
            create_at(x,y,tile_id,z)
          else
            create_t(x,y,tile_id,z)
          end
        end
      end
    end
    update_sprites
  end
 
  def create_at(x,y,id,z)
    count = @autotile_count[id / 48 - 1]
    string = "##{id}##{count}"
    string2 = "##{x}##{y}##{z}"
    if @stored_autotiles[string].nil?
      autotile = @autotiles[id / 48 - 1]
      tid = id % 48
      bitmap = Bitmap.new(32,32)
      tiles = Autotiles[tid / 8][tid % 8]
      anim = count * 96
      for i in 0...4
        tile_position = tiles[i] - 1
        src_rect = Rect.new(tile_position % 6 * 16 + anim, tile_position / 6 * 16, 16, 16)
        bitmap.blt(i % 2 * 16, i / 2 * 16, autotile, src_rect)
      end
      @stored_autotiles[string] = bitmap
    end
    if @autotile_sprites[string2].nil?
      sp = Sprite.new(@viewport)
      sp.x = x * 32
      sp.y = y * 32
      c = @priorities[id]
      c += 1 if c > 0
      sp.z = 150 * c
      @autotile_sprites[string2] = sp
      @anim_list.push([x,y,id,z])
    end
    @autotile_sprites[string2].bitmap = @stored_autotiles[string]
  end
 
  def create_t(x,y,id,z)
    string = "##{id}"
    if @stored_tiles[string].nil?
      rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32)
      bt = Bitmap.new(32,32)
      bt.blt(0,0,@tileset,rect)
      @stored_tiles[string] = bt
    end
    sp = Sprite.new(@viewport)
    sp.x = x * 32
    sp.y = y * 32
    if @priorities[id]==0
    c = @priorities[id]
    else
    c = @priorities[id]+y
    end
    c += 1 if c > 0
    sp.z = 150 * c
    sp.bitmap = @stored_tiles[string]
    @sprites.push(sp)
  end
 
  def update
    return if disposed?
    if @map_data != @real_map_data
      refresh
    end
    @anim_count += 1
    if @anim_count >= 15
      @anim_count = 0
      for i in 0..6
        @autotile_count[i] += 1
        @autotile_count[i] = 0 if @autotile_count[i] >= @autotile_max_count[i]
      end
      for b in @anim_list
        create_at(b[0],b[1],b[2],b[3])
      end
    end
  end
 
  def update_sprites
    @autotile_sprites.each_value{|v|v.ox = @ox;v.oy = @oy;v.visible = @visible}
    for sp in @sprites;sp.ox = @ox;sp.oy = @oy;sp.visible = @visible;end
  end
   
  def dispose
    dispose_sprites unless @sprites.nil?
    @disposed = true
  end
 
  def disposed?
    @disposed
  end
 
  def ox=(v)
    @ox = v
    update_sprites
  end
 
  def oy=(v)
    @oy = v
    update_sprites
  end
 
  def visible=(v)
    @visible = v
    update_sprites
  end
 
  def dispose_sprites
    unless @sprites.nil?
      for element in @sprites
        element.dispose unless element.nil?
      end
      @sprites = nil
    end
    @autotile_sprites.each_value{|sprite|sprite.dispose unless sprite.nil?}
    @autotile_sprites = {}
    GC.start
  end
end



IV - Source

https://www.rpgmakercentral.com/topic/18978-tsda-xp-ace-maping-create-your-maps-using-rmxp/


FoxFiesta - posté le 25/03/2018 à 18:32:13 (443 messages postés)

❤ 0

Belle trouvaille merci ! Je serais très intéressé par un équivalent pour XP vers MV, mais je ne crois pas que quelqu'un l'ait déjà fait.


Erwill - posté le 25/03/2018 à 22:15:36 (172 messages postés)

❤ 0

FoxFiesta a dit:


Belle trouvaille merci ! Je serais très intéressé par un équivalent pour XP vers MV, mais je ne crois pas que quelqu'un l'ait déjà fait.



Non, il y en a pas, et ça serait un peu complexe à cause de la différence de taille de tiles.

Mais cependant, j'ai un équivalent pour toi, si tu utilise RPG Maker MV : https://forums.rpgmakerweb.com/index.php?threads/tiled-plugin-version-1-3-0-released.50752/


Verehn - posté le 26/03/2018 à 02:25:57 (9056 messages postés) - honor -

❤ 0

Vhehrhehn

C'est beau la technologie. :sriden

Merci du partage !

Eldrao ~ PakuPaku ~ Winged Light ~ Ruin ~ Ma galerie ~ LTDAD ~ Don de graphismes plateforme 2D

Index du forum > Scripts > [ACE] Utiliser les maps de RPG Maker XP sur VX Ace

repondre up

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