significa que nao e possivel visualizar/utilizar o arquivo gerao enquanto nao terminar essa gravacao, e tambem caso o jogo seja fechado antes do termino o arquivo fica corrompido.Para criar nosso processo paralelo usaremos uma Thread. Basicamente uma thread e um bloco de codigo que e executado em paralelo com o programa principal. A tecnica nao e muito complicada nem ocupa muito espaco. Primeiro vamos carregar um Bitmap para usar na gravacao:data_system = load_data("Data/System.rxdata")aBitmap_obj = RPG::Cache.title(data_system.title_name)As linhas acima irao carregar a imagem de titulo na variavel aBitmap_obj.Agora vamos a Thread:thread_bmp = Thread.new(aBitmap_obj) dobeginfile = File.new('image.bmp','wb')file.bmp_write(aBitmap_obj)file.closerescueprint 'Erro ao gravar um bitmap'endenda linha:thread_bmp = Thread.new(aBitmap_obj) doCria nossa Thread. Observe que ja passamos como argumentoda Thread o Bitmap que criamos antes. O "do" define o nosso bloco de codigo que termina no ultimo "end".O "begin" e um outro bloco que criei dentro da threadso para poder usar o tratamentos de excecoes(erros) da clausula "rescue". Isso porque quando ocorre um erro dentro da Thread o Game.exe fecha sem nem um aviso. Entao se acontecer algum erro na Thread o que esta entre o recue e o end sera executado. No exemplo so cooquei uma mensagem, o que nao e muito correto, porque se aconteceu algum erro a thread para mas o programa continua sem tratar do problema.Entre o begin e o rescue deve entrar aquelas tres linhas que ja usavamos para gravar o arquivo antes.file = File.new('image.bmp','wb')file.bmp_write(aBitmap_obj)file.closeAbre o arquivo para leitura, escreve o BMP no arquivo e fecha o arquivo quando terminar a escrita.Basicamente e isso. Teste a tecnica e qualquer duvida fique a vontade.Script#========================================# BMP writer#----------------------------------------#by: zecomeia#date: 01/11/2010#for: RGSS/RGSS2#version: 1.0#www.colmeia-do-ze.blogspot.com#----------------------------------------=beginIO's method to write a BMP truecolor(24bits) file from a RGSS's Bitmap object.-bmp truecolor 24bits-resolution vertical and horizontal = 96dpi-use a RGSS's Bitmap object to write the image file*To open file to write, use BINARY mode.file = File.new('image.bmp','wb')To write use the bmp_write method after open filefile.bmp_write(aBitmap_obj)Close filefile.close=endclass IO def bmp_write(bitmap) self.write_FileHeader(bitmap) self.write_ImageHeader(bitmap) self.write_Bitmap(bitmap) self.putc(0x00) self.putc(0x00) end def write_FileHeader(bitmap) #sign self.putc(0x42) self.putc(0x4D) #file size w = bitmap.width h = bitmap.height img_size = w * h * 3 + 56 # 3bytes/pixel(true color 24bits) hexa = sprintf("%x",img_size) length = hexa.size hexa_byte = [] if length%2 != 0 hexa = '0' + hexa length +=1 end pointer_byte = 0 for i in 0...length/2 pointer_byte += 1 hexa_byte[i] = hexa.unpack('a2') hexa.sub!(hexa_byte[i].to_s,'') end for byte in hexa_byte.reverse self.putc(sh_i(byte.to_s)) end (4 - pointer_byte).times { self.putc(0x00) } #reserved area 4.times { self.putc(0x00) } #offset bits self.putc(0x36) 3.times { self.putc(0x00) } end def write_ImageHeader(bitmap) #image header size self.putc(0x28) 3.times { self.putc(0x00) } #width w = bitmap.width hexa = sprintf("%x",w) length = hexa.size hexa_byte = [] if length%2 != 0 hexa = '0' + hexa length +=1 end pointer_byte = 0 for i in 0...length/2 pointer_byte += 1 hexa_byte[i] = hexa.unpack('a2') hexa.sub!(hexa_byte[i].to_s,'') end for byte in hexa_byte.reverse self.putc(sh_i(byte.to_s)) end (4 - pointer_byte).times { self.putc(0x00) } #height h = bitmap.height hexa = sprintf("%x",h) length = hexa.size hexa_byte = [] if length%2 != 0 hexa = '0' + hexa length +=1 end pointer_byte = 0 for i in 0...length/2 pointer_byte += 1 hexa_byte[i] = hexa.unpack('a2') hexa.sub!(hexa_byte[i].to_s,'') end for